Есть ли способ автоматически встроить хеш последнего коммита в исполняемый файл при создании приложения?< /p>
Например, вывод хеша фиксации на консоль будет выглядеть примерно так:
class PrintCommitHash
{
private String lastCommitHash = ?? // What do I put here?
static void Main(string[] args)
{
// Display the version number:
System.Console.WriteLine(lastCommitHash );
}
}
Обратите внимание, что это должно быть сделано во время сборки, а не время выполнения, так как мой развернутый исполняемый файл не будет иметь доступ к репозиторию git. .
Соответствующий вопрос по C++ можно найти здесь.
РЕДАКТИРОВАТЬ
По просьбе @mattanja я публикую скрипт git-хука, который использую в своих проектах. Настройка:
- Хуки — это сценарии оболочки Linux, которые размещаются в папке: path_to_project\.git\hooks
- Если вы используете msysgit, папка hooks уже содержит несколько примеров сценариев. Чтобы git мог их вызывать, удалите расширение «.sample» из имени скрипта.
- Имена скриптов-перехватчиков соответствуют событию, которое их вызывает. В моем случае я изменил post-commit и post-merge.
- My AssemblyInfo.cs файл находится непосредственно под путем проекта (тот же уровень, что и папка .git). Он содержит 23 строки, и я использую git для генерации 24-й.
#!/bin/sh
cmt=$(git rev-list --max-count=1 HEAD)
head -23 AssemblyInfo.cs > AssemblyInfo.cs.tmp
echo [assembly: AssemblyFileVersion\(\"$cmt\"\)] >> AssemblyInfo.cs.tmp
mv AssemblyInfo.cs.tmp AssemblyInfo.cs
Подробнее здесь: https://stackoverflow.com/questions/151 ... -a-net-dll