Индексирование источников с помощью Git
Я пытаюсь начать использовать индексацию исходного кода вместе с Git на нашем сервере сборки (TeamCity).
Я скачиваю этот проект: https://github.com/joliver/SourceServer-GitExtensions
Во время его работы я заметил предупреждения / ошибки. копаясь в скрипте (который основан на PERL), я заметил, что скрипт запускает эту функцию:
sub GetSha1OfFirstCommand {
my $result = `git rev-list --reverse master`;
my @ids = split(/\n/, $result);
return($ids[0]);
}
Это выполняется в попытке получить идентификатор хранилища (идентификатор первого коммита, который я предполагаю).
Проблема в том, что в настоящее время мы не используем ветку master.
Мой вопрос - это правильный и надежный способ получения "идентификатора репозитория"? Могу ли я запустить что-то еще, чтобы получить "текущую ветвь, которая извлечена", а не мастер?
2 ответа
Это пытается получить идентификатор коммита первого коммита. git rev-list --reverse master
и получение первого идентификатора, то есть то, что делает код, который вы дали, должно работать (в основном), поскольку все репозитории git поставляются с основной веткой, а первая фиксация выполняется на главной, и любая ветвь будет иметь ответвление от этого. Главным образом потому, что ветка может иметь свою историю (git checkout --orphan
) или там не может быть мастера. В этом случае более надежным будет git rev-list --reverse HEAD
, Это будет работать даже на голом репо.
Минимальные изменения будут заключаться в следующем:
git rev-list --reverse HEAD
Это даст вам список ревизий для текущей ветки.