0

我正在尝试在我们的构建服务器(TeamCity)上与 Git 一起使用源索引。

我下载了这个项目:SourceServer-GitExtensions

在运行它时,我注意到警告/错误。深入研究脚本(基于 PERL),我注意到脚本运行这个函数:

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

这是为了获取存储库的 id(我假设的第一次提交的 id)而运行的。

问题是,我们目前没有使用 master 分支。

我的问题是 - 这是获取“存储库 ID”的正确且可靠的方法吗?我可以运行其他东西来获取“已签出的当前分支”而不是 master 吗?

4

2 回答 2

3

最小的更改是运行它:

git rev-list --reverse HEAD

这将为您提供当前分支的修订列表。

于 2011-12-16T21:59:08.480 回答
2

这试图获取第一个提交的提交 ID。git rev-list --reverse master并获得第一个 id,这是您给出的代码所做的,应该(大部分)工作,因为所有 git repos 都带有一个 master 分支,并且第一次提交是在 master 上完成的,任何分支都会从那里分支出来。主要是因为一个分支可以有它自己的历史(git checkout --orphan)或者可能没有一个主人。在这种情况下,一个更强大的将是git rev-list --reverse HEAD. 这甚至适用于裸回购。

于 2011-12-16T22:02:07.267 回答