2016-10-16 9 views
3

Bashとgitを使用して、ブランチがマージされた最後の時刻と異なるファイルを含むディレクトリのコレクションを得るにはどうすればmastergit bashでmonorepoのci/cdに依存しないマイクロサービス

特定のファイル名を含むようなパターン、たとえばpackage.jsonを含む変更されたディレクトリのコレクションを構築し、変更されたコレクションのコレクションがrequirements.txtであるように変更したコレクションがさらに優れています。

答えて

1

あなたは最後のマージを取得するためにgit merge-baseを使用することができます。

フォーク点部に
git diff --name-only $(git merge-base --fork-point master myBranch)..myBranch 

this answerを参照してください。

そこから、パターンでgrepして結果を除外することができます。

torekフォーク・ポイントが必要で、かつa pathspec

git diff --name-only master...myBranch -- requitements.txt 

は "What are the differences between double-dot "..." and triple-dot "..." in Git diff commit ranges?"

http://mythic-beasts.com/~mark/git-diff-help.png

+0

注を参照してください使用していない場合は、コメントで追加されますように、そのあなたがいない場合'--fork-point'の振る舞いが必要な場合は、' git diff'の '' git diff --name-only master ... myBranch'でトリプルドットの特別なセマンティクスを使うことができます。 (あなたのパターンがシンプルグロブパターンであれば、 'git diff'ステップでもパススペックとしてそれらを実行できます。) – torek

+0

@torek良い点。私は、より多くの可視性のためにそれを答えに含めて示しました。この場合、 – VonC

+0

fork-pontが必要です。この質問に対する知事の回答の両方に感謝します。 – Tom

関連する問題