2013-03-20 6 views
2

Я использую git как контроль версий, и я пытаюсь подключить SHA1 текущего коммита в визуальную студийную сборку как определение.Команда hook git в Visual Studio pre build step

Поэтому в основном я хочу, чтобы включить вывод команды

git rev-parse HEAD 

в определить, что я могу вставлять в выходной двоичный файл.

Заранее спасибо.

ответ

2

Используя post-commitgithook, вы можете поместить его в файл. I думаю git на окнах поставляется с раковиной bourne, поэтому следующее будет работать в крюке после фиксации.

#!/bin/sh 
GIT_SHA_INCLUDE_FILE=foo.h 
echo -n '#define GIT_SHA ' > $GIT_SHA_INCLUDE_FILE 
git rev-parse HEAD >> $GIT_SHA_INCLUDE_FILE 

И кроме того, что, как .git/Крючков/после фиксации

файла должен оставаться неотслеживаемыми, так как это (почти) невозможно включить хэш фиксации внутри себя обязательство.

+1

Вот один вопрос, который может быть проблемой: http://stackoverflow.com/questions/12410164/github-for-windows-pre-commit-hook – forivall

3

Честно говоря, я предпочитаю события предварительной сборки в Visual Studio поверх Git post-commit. Существует дополнительное преимущество в том, чтобы знать, строится ли вы из грязного хранилища или нет. Написал это сегодня. Ниже приведены общие шаги от сборки до выполнения:

Процесс сборки имеет сценарий предварительной сборки, который собирает информацию о статусе версии и репозитория. В нашем случае VC++ использует сценарий Windows PowerShell version_info.ps1.

Сценарий предварительной сборки генерирует файл исходного кода, ожидаемый остальной частью кодовой базы. Сгенерированный файл имеет все необходимое, чтобы разрешить или запретить запуск версии. В нашем случае это заголовочный файл C++ version.h.

Код содержит функцию, которая проверяет, является ли сборка законной для запуска, и регистрирует и останавливает процесс по мере необходимости. Этот примерный код находится в функции versionLogAndVet файла примера version.cpp.

Во время выполнения функция versionLogAndVet позволяет запускать только разрешенные комбинации конфигурации состояния/сборки репозитория. Он также регистрирует информацию о версии.

The specifics and code examples are at the full post.

Смежные вопросы