コード開発はほとんどの場合、main
ブランチで行われます。ある時点では、互いに密接に関係しているいくつかの新機能に取り組む時です。このために、新しいブランチsome_feature_set
を作成しました。複数の開発者がこの機能セットで作業します。各開発者はそれぞれのブランチで作業し、特定のサブフィーチャが終了したとみなされると、some_feature_set
にマージされます。フィーチャセットが完全に実装されたら、それをmain
にマージすることです。ネスト分岐のClearCase設定仕様
element * CHECKEDOUT
element * /main/some_feature_set/some_sub_feature/LATEST
element * /main/some_feature_set/LATEST -mkbranch some_sub_feature
element * /main/LATEST -mkbranch some_feature_set
some_sub_feature
のための作業がsome_feature_set
にマージされることを意図しているので、私たちのアイデアはすでにタスクブランチを作成する前にsome_feature_set
から分岐した:
私たちの組織はダイナミックビューを使用しています(これは変更できません)。他の開発者がmain
とsome_feature_set
ブランチを変更してサブフィーチャーブランチで進行中の作業を壊す可能性があるので、私たちはタイムスタンプを使用します。設定の仕様は、したがって、次のようになります。main
からファイルをチェックアウトするとき
element * CHECKEDOUT
element * /main/some_feature_set/some_sub_feature/LATEST
mkbranch some_sub_feature
element * /main/some_feature_set/LATEST -time <some_time>
mkbranch some_feature_set
element * /main/LATEST -time <some_time>
end mkbranch
end mkbranch
これは、問題が発生します。 ClearCaseはそれをsome_feature_set
に分岐しますが、新しく作成されたバージョンを選択するルールがないため、再度分岐してブランチが存在するというエラーを発行します。
element * CHECKEDOUT
element * /main/some_feature_set/some_sub_feature/LATEST
mkbranch some_sub_feature
element * /main/some_feature_set/LATEST -time <some_time>
element * /main/some_feature_set/0
mkbranch some_feature_set
element * /main/LATEST -time <some_time>
element * /main/0
end mkbranch
end mkbranch
ファイルをチェックアウトするか、ClearCaseのに新しいファイルを追加するとき、我々はすべての問題を得ることはありません。この方法は:これは、我々は、設定の仕様に複数のルールを追加することによって修正することができます。しかし、別の開発者がmain
ブランチしか持たないファイルに対してsome_feature_set
ブランチの作業を行い、このファイルをチェックアウトすると、ビューで選択されたバージョンが変更されるという問題があります。
例えば、上記の設定仕様では、/main/4
が私のビューでsome_file
に選択されているとします。作業は並行して継続し、バージョン/main/5
は別の開発者によって作成されます。 config specのルールは、依然としてバージョン/main/4
を選択します。ある時点では、さらに別の開発者がsome_feature_set
の作業をしなければならず、some_file
のバージョンが/main/5
になるような、より新しいタイムスタンプを持つ独自のビューを設定します。この開発者はsome_file
にいくつかの変更を加えてチェックアウトしなければなりません。これにより、すぐにバージョン/main/some_feature_set/0
と/main/some_feature_set/some_other_sub_feature/0
が作成されます。 /main/some_feature_set/0
が存在するため、私のビューはそれを選択します。内容は/main/5
と同じで、/main/4
ではありません。他の開発者がファイルをチェックアウトする前と同じです。
上記の問題を防ぐためにできることはありますか?
私の言葉はおそらく間違っていました。私が 'some_feature'と言ったところでは、家族の大きなサブファミリーのファミリーを意味し、私が 'some_task'と言ったところで、私はこれらの 'sub_features'のうちの1つを意味しました。私はワークフローが開発者指向ではなく、仕事指向でなければならないことを理解しています。私は私の質問を更新します。 –
@ TudorTimi私は同意するが、私の答えはまだ立っている。 ...を使用することが望ましい。 – VonC
timestamptとlabelの関係については、中間のマイルストーンを定義していないため、ラベルはありません。現在、タイムスタンプしかありません。リリース以外の目的でラベル付けについて話すのは面白いでしょう。私はこれについて新しい質問をする必要があります。 –