2011-12-16 20 views
0

ビルドサーバー(TeamCity)でGitと一緒にソース索引付けを開始しようとしています。私は警告/エラーが気づいたことを実行している間SourceServer-GitExtensionsGitでソース索引付け

私はこのプロジェクトをダウンロードしてください。

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

これは、リポジトリのid(最初の私は仮定コミットのID)を取得しようとする試みで実行されています(PERL基づいている)スクリプトに掘り、私は、スクリプトがこの機能を実行します気づきました。

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

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

答えて

2

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

+0

これは必ずしも真実ではありません。 masterブランチを持つ標準はありますが、必須ではなく、名前を変更することができます。 – Guildencrantz

+0

@Guildencrantz - だから私は 'ほとんど'と言った – manojlds

3

最小限の変更ではなく、これを実行するために、次のようになります。

git rev-list --reverse HEAD 

これは、あなたの現在のブランチのリビジョンのリストを提供します。

+0

これはベアリポジトリで機能しますか? –

+0

これは、repoが正しいブランチを指している限り、裸のレポではうまくいきます。 –

+0

最初のコミットが同じであれば、別のブランチにいても、最初にチェックするブランチは問題ではありません。あなたが2つのルーツを持っていれば、それは変わるでしょう。 –

関連する問題