ノード: The Dovetail Approach -- Merging In And Out Of The Trunk, 次: , 前: Merging Repeatedly Into The Trunk, 上: Going Out On A Limb (How To Work With Branches And Survive)



The Dovetail Approach - Merging In And Out Of The Trunk

ブランチからトランクへ何度もマージするというのは、トランク上に居る人々 にとっては良いことです。なぜなら、自分たちの変更も、ブランチからの変 更も全てわかるからです。しかしながら、ブランチ上の開発者はトランク上 での作業分を組み込めないのです。

これをするためには、ブランチ開発者は時々余分なステップを踏む必要があ ります。(最新のトランクの変更をマージしたいと思ったり、避けられない コンフリクトをどうにかしたいと思った時はいつでも、という意味です):

     paste$ cvs update -j HEAD
     

特別に予約されたタグ HEAD は、トランクの先端を意味しています。こ のコマンドは、現在のブランチの根(Exotic_Greetings-branch)から、ト ランク上の現在の最大のリビジョンまでの変更をすべてマージします。もちろん、 qsmithはこれを実行したあと再度タグをつけなければなりません。トランク上の 開発者が qsmith の変更をマージしようとしたときに、誤って自分自身の変更を マージしてしまうことを避けられるようにするためです。

ブランチ開発者も同様に、最後にマージしてから現在状態までのトランクの変更 を正確にブランチにマージするために、トランクのマージタグを境界として使用 することができます(トランクがマージするのと同じ方法で)。例えば、jrandom がブランチからマージした後 hello.c に変更を施したとします:

     floss$ emacs hello.c
      ...
     floss$ cvs ci -m "clarify algorithm" hello.c
     Checking in hello.c;
     /usr/local/newrepos/myproj/hello.c,v  <--  hello.c
     new revision: 1.22; previous revision: 1.21
     done
     floss$
     

その後、qsmith がこれらの変更をブランチにマージし、コミットし、タグをつ けます:

     paste$ cvs -q update -j merged-Exotic_Greetings-1 -j HEAD
     RCS file: /usr/local/newrepos/myproj/hello.c,v
     retrieving revision 1.21
     retrieving revision 1.22
     Merging differences between 1.21 and 1.22 into hello.c
     paste$ cvs -q update
     M hello.c
     paste$ cvs -q ci -m "merged trunk, from merged-Exotic_Greetings-1 to HEAD"
     Checking in hello.c;
     /usr/local/newrepos/myproj/hello.c,v  <--  hello.c
     new revision: 1.21.2.1; previous revision: 1.21
     done
     paste$ cvs -q tag merged-merged-Exotic_Greetings-1
     T README.txt
     T foo.gif
     T hello.c
     T a-subdir/whatever.c
     T a-subdir/subsubdir/fish.c
     T b-subdir/random.c
     paste$
     

jrandom は hello.c の変更をコミットした後にタグづけせず、qsmith がそれを したということに注意してください。ここでの原則では、ちょっとした変更のあ とにいちいちタグをつける必要はなくて、マージの後、及び自分の開発ラインの マージできる状態をコミットした後に常にタグをつけるべきなのです。こうすれ ば、他の人(別のブランチにいるのでしょう)に自分自身のマージの基礎となる参 照の点がわかります。