かっこいいからといって、ビルド番号を付けるのが好きです。私を判断しないでください:D。
ただし、私は2台のマシン(移植性チェック用に1台のOS Xと1台のWindows)で開発しています。両方のマシンに、プロジェクトをビルドするたびにビルド番号を自動的に増やすスクリプトがあります。ただし、gitと同期せずに両方のマシンで変更を行うと、ビルド番号を保持するファイルが両方のマシンで変更されたため、明らかにマージの競合が発生します。
これらのファイルを自動的にマージするためのきちんとした方法はありますか?次のようなルールを定義できれば、すばらしいと思います。
ファイル
buildnumber.txt
にマージの競合がある場合は、スクリプトauto-merge-build-number.sh
を実行して、コミットを続行します。
ここで、auto-merge-build-number.sh
は、競合するファイルを解析し、2つの数値(競合する行にあります)を合計し、その合計でファイルを書き換える単純なスクリプトです。これがgitで可能かどうかはわかりません。
私が自分自身について考えることができる別の方法がありますが、あまりきちんとしていません。そのマシンにのみ使用されるすべてのマシンのビルドカウンターファイルを追跡します。プロジェクトがそのマシンでビルドされる場合、そのマシンのビルドカウンターファイルが増加します。その後、ビルド番号を保持しているすべてのファイルが合計され、結果が.gitignore
にあるファイルに書き込まれます。このように、複数のマシンで開発することによるマージの競合はありません。複数のブランチで開発することによってのみ競合をマージします。合計ビルド数を追跡するためにn + 1ファイルが必要であり(n台のマシンがある場合)、適切なファイルを増やすためにすべてのマシンのスクリプトをわずかに異なる必要があるため、このアプローチはあまり好きではありません。
これをどのように行うことができるかについて何か考えはありますか?
まず、ビルドの代わりにコミットを使用することで逃げることができますか?
git describe
またはgit rev-list --count --first-parent HEAD
はリビジョン番号のようなものを与えることができます。ブランチがある場合は注意してください。間違った動作をしますが、ビルド番号も同様です。
次に、ビルド番号の使用を主張する場合は、カスタムマージドライバーが必要です。
こちらのドキュメントを参照してください: http://git-scm.com/docs/gitattributes#_defining_a_custom_merge_driver
基本的に、マージ中にやりたいことを実行するスクリプトを作成できるはずです。
さまざまな語彙でさらに検索した後、私はこの投稿を見つけました: http://nuclearsquid.com/writings/git-tricks-tips-workflows/ (.gitattributesに関するセクション)
基本的に、このソリューションは私が探していたソリューションであり、2つのステップで構成されています。
buildnumbermerge
と呼ばれる)を作成し、それを.git/config
に配置します(詳細については、リンクを参照してください)。どのファイルがどのマージ戦略を使用するかを指定します。つまり、buildnumber.txt
には、次のような行を使用して.gitattributes
で指定することにより、マージ戦略buildnumbermerge
が必要です。
buildnumber.txt merge=buildnumbermerge
参照: