2011-12-16 4 views
0

Я пытаюсь начать использовать индексацию источника вместе с Git на нашем сервере сборки (TeamCity).Источник Индексирование с помощью Git

загрузить этот проект: SourceServer-GitExtensions

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

sub GetSha1OfFirstCommand { 
my $result = `git rev-list --reverse master`; 
my @ids = split(/\n/, $result); 
return($ids[0]); 
} 

Это выполняемый в попытке получить идентификатор репозитория (идентификатор первой фиксации я предполагаю).

Проблема в том, что в настоящее время мы не используем основную ветвь.

Мой вопрос - это правильный и надежный способ получить «Идентификатор хранилища»? Могу ли я запустить что-то еще, чтобы получить «текущую ветку, которая проверена», а не мастер?

ответ

2

Это попытка получить идентификатор фиксации первого коммита. git rev-list --reverse master и получение первого идентификатора, который является кодом, который вы указали, должен работать (в основном), поскольку все репозитории git поставляются с ведущей ветвью, а первая фиксация выполняется на master, и любая ветка от нее отделяется. В основном потому, что ветка может иметь свою собственную историю (git checkout --orphan), или может не быть мастера. В этом случае более надежным будет git rev-list --reverse HEAD. Это будет работать даже на голой репо.

+0

Это не обязательно так. Несмотря на то, что стандарт имеет ведущую ветвь, это не требуется, и имя может быть изменено. – Guildencrantz

+0

@Guildencrantz - вот почему я сказал «в основном» – manojlds

3

минимальные изменения будут запускать вместо этого:

git rev-list --reverse HEAD 

Это даст вам список ревизий для текущей ветви.

+0

Это работает для открытого хранилища? –

+0

Это работает для меня на голой репо, если 'HEAD' в этом репо указывает на правильную ветку. –

+0

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