45

私の TeamCity v7.0 ビルド プロジェクトの 1 つは、現在の開発ブランチとマスター ブランチの間の差分を使用して、何を実行する必要があるかを判断することに依存しています。次のようなものを使用する小さなスクリプトを作成しました。

git diff origin/master..origin/QA --name-only --diff-filter=AM | DoSomethingWithThoseFiles

残念ながら、ビルドログはそれが機能しgit diffていないことを示しています。このプロジェクトの buildAgent/work ディレクトリに移動すると、.gitフォルダーがないことがわかり、必要な git 操作を実行できません。

TW-15873で述べたようにファイルを入れteamcity.git.use.local.mirrors=trueましたが、それは何の役にも立たないようです。buildAgent.properties

ビルド ステップのスクリプトで 2 つのブランチ間で変更されたファイルのリストを取得するためにできることはありますか?

4

3 に答える 3

52

こちらに記載されているように、VCS チェックアウト モードを「エージェントのファイルを常にチェックアウトする」に変更してみてください。これにより、ビルド スクリプトが .git フォルダーにアクセスできるようになります。

于 2012-07-27T15:43:52.130 に答える
7

@Mike Twoの答えは正しいです.VCSルートを構成して、サーバーではなくエージェントで自動的にチェックアウトモードを使用する必要があります。TC ドキュメントには、この必須設定がデフォルトで「詳細」として非表示になっているとは記載されていません。というわけで、ここに何を探すべきかの写真があります。

高度な設定

参考までに、私の特定の VS2013 ソリューション ステップ エラーは、以下のように MSBuild からのものでした。最新の TeamCity Enterprise 9.0 EAP (ビルド 31963) を使用しています。 [PreBuildEvent] Exec [14:21:55][Exec] git rev-parse --short=9 HEAD > "C:\TeamCity\buildAgent\work\e5e910561e800525\MYPROJECT\bin\Debug\version.txt" [14:21:55][Exec] fatal: Not a git repository (or any of the parent directories): .git [14:21:55][Exec] C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets(1131, 5): error MSB3073: The command "git rev-parse --short=9 HEAD > "C:\TeamCity\buildAgent\work\e5e910561e800525\Higgens\bin\Debug\version.txt"" exited with code 128. [14:21:55]

//編集; これをコメントに追加する方法がわかりませんでした。

于 2014-12-04T20:11:34.863 に答える
0

少なくともTCの最新バージョンでは、設定が欠けている可能性がteamcity.git.use.shallow.clone=falseあります。teamcity.git.fetchAllHeads=true

于 2021-05-07T22:28:13.673 に答える