使用Git进行源代码索引

使用Git进行源代码索引,git,build,continuous-integration,source-server,Git,Build,Continuous Integration,Source Server,我正在尝试在构建服务器(TeamCity)上与Git一起使用源代码索引 我下载这个项目: 在运行它时,我注意到了警告/错误。深入研究该脚本(基于PERL),我注意到该脚本运行以下函数: sub GetSha1OfFirstCommand { my $result = `git rev-list --reverse master`; my @ids = split(/\n/, $result); return($ids[0]); } 这是为了获取存储库的id(我假设的第一次提交的id)而运行的

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

我下载这个项目:

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

sub GetSha1OfFirstCommand {
my $result = `git rev-list --reverse master`;
my @ids = split(/\n/, $result);
return($ids[0]);
}
这是为了获取存储库的id(我假设的第一次提交的id)而运行的

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


我的问题是——这是一种获取“存储库Id”的正确而健壮的方法吗?我是否可以运行其他操作来获取“已签出的当前分支”而不是主分支?

最小的更改是运行以下操作:

git rev-list --reverse HEAD

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

最小的更改是运行以下命令:

git rev-list --reverse HEAD

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

这将尝试获取第一次提交的提交id
git rev list——反向主控
和获取第一个id(您给出的代码就是这样做的)应该(主要)起作用,因为所有git repo都有一个主分支,第一次提交是在主控上完成的,任何分支都会从主控上分支出来。主要是因为分支可以有自己的历史记录(
git checkout--orphan
),也可能没有主分支。在这种情况下,一个更健壮的方法是
git rev list——反向磁头。这甚至可以在裸回购上使用。

这会尝试获取第一次提交的提交id
git rev list——反向主控
和获取第一个id(您给出的代码就是这样做的)应该(主要)起作用,因为所有git repo都有一个主分支,第一次提交是在主控上完成的,任何分支都会从主控上分支出来。主要是因为分支可以有自己的历史记录(
git checkout--orphan
),也可能没有主分支。在这种情况下,一个更健壮的方法是
git rev list——反向磁头。这甚至对裸回购也有效。

这对我来说对裸回购有效,只要该回购中的
HEAD
指向正确的分支。我突然想到,即使你在不同的分支上,只要你有相同的初始提交,你最初检查的分支并不重要。如果你有两个根,那么它会改变。这对我来说适用于裸回购协议,只要回购协议中的
HEAD
指向正确的分支。我突然想到,即使你在不同的分支上,只要你有相同的初始提交,最初检查哪个分支并不重要。如果你有两个根,那么它就会改变。这不一定是真的。虽然标准要求有一个主分支,但它不是必需的,而且名称可以更改。@Guildencrantz-这就是为什么我说
主要是
这不一定是真的。虽然标准要求有一个主分支,但它不是必需的,而且名称可以更改。@Guildencrantz-这就是为什么我说的
主要是