0

master と dev の 2 つのブランチを持つ git リポジトリがあります。新しいものはdevで行います。修正は master で行われ、dev にマージされます。CruiseControl.NET が建物を処理してくれます。git ソース コントロール ブロックが、変更されていないファイルへの変更をリストするという問題がありました。これは、変更を検出するために -m を指定して git log を使用しているためと思われます。

私たちが行った手順は次のとおりです。

  1. dev ブランチで、1 つの変更を行います。
  2. dev をコミットしてリモート リポジトリにプッシュします。
  3. その後、CruiseControl.Net は最新バージョンをフェッチし、この単一の変更をビルドしてリリースします。
  4. master ブランチで、別のファイルを変更します。
  5. 専念。
  6. master を dev にマージします。
  7. dev をリモート リポジトリにプッシュしました。
  8. その後、CruiseControl.Net は最新バージョンをフェッチし、ビルドして、この変更と以前の変更の両方をリリースします!

ステップ 8 では、 --name-only および -m オプションを指定して git log を実行し、変更を検出しました。-m は、ステップ 1 で変更されたファイルを含む、マージに含まれるすべてのファイルをリストします。ただし、このファイルはステップ 4 で変更されていないため、ステップ 8 で変更としてリストされるべきではありません。

では、なぜ -m が使用されるのでしょうか。

4

1 に答える 1

0

Afaik -m は、マージ コミットを正しく検出するために導入されました。

この変更を参照してください: https://github.com/ccnet/CruiseControl.NET/commit/a65380e7d302370cfcb6fa3905dba0ed1b731458

于 2013-06-06T21:45:45.277 に答える