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)を取得しようとして実行されます。

問題は、現在マスターブランチを使用していないことです。

私の質問は-これは「リポジトリID」を取得するための適切で堅牢な方法ですか?マスターではなく、「チェックアウトされている現在のブランチ」を取得するために他の何かを実行できますか?

4

2 に答える 2

3

最小限の変更は、代わりにこれを実行することです。

git rev-list --reverse HEAD

これにより、現在のブランチのリビジョンリストが表示されます。

于 2011-12-16T21:59:08.480 に答える
2

これは、最初のコミットのコミットIDを取得しようとします。git rev-list --reverse masterそして、最初のIDを取得することは、あなたが与えたコードが行うことですが、すべてのgitリポジトリにはマスターブランチが付属しており、最初のコミットはマスターで行われ、すべてのブランチはそこから分岐しているため、(ほとんど)機能するはずです。主な理由は、ブランチが独自の履歴(git checkout --orphan)を持つことができるか、マスターが存在しない可能性があるためです。その場合、より堅牢なものはになりますgit rev-list --reverse HEAD。これは、裸のリポジトリでも機能します。

于 2011-12-16T22:02:07.267 に答える