【问题标题】:Source Indexing with Git使用 Git 进行源索引
【发布时间】:2012-01-22 08:35:56
【问题描述】:

我正在尝试在我们的构建服务器 (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 吗?

【问题讨论】:

    标签: git build continuous-integration source-server


    【解决方案1】:

    最小的改变是运行它:

    git rev-list --reverse HEAD
    

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

    【讨论】:

    • 这适用于我的裸仓库,只要该仓库中的HEAD 指向正确的分支。
    • 我突然想到,即使你在不同的分支上,只要你有相同的初始提交,你最初检查哪个分支都没有关系。如果你有两个根,那么它会改变。
    【解决方案2】:

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

    【讨论】:

    • 这不一定是真的。虽然标准有一个 master 分支,但这不是必需的,名称可以更改。
    • @Guildencratz - 这就是为什么我说mostly
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-09
    • 1970-01-01
    • 2021-07-29
    • 1970-01-01
    • 2017-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多