以前、ソース管理システムとしてのClearcaseに関する意見を文書化しましたが、残念ながら、現在も使用しています。だから私はあなたたちに私の欲求不満の1つを和らげるのを手伝ってくれるよう頼みます。
特定のファイルが変更された理由を特定する際に発生していた問題のいくつかを改善するために、開発者ごとに1つのブランチからタスクごとに1つのブランチに移行しました。一般的に私は解決策に満足していますが、1つの大きな問題があります。単純なスクリプトを使用してタスクを開始および終了し、ユーザー名とタスク番号で名前が付けられた新しいブランチを作成してから、ローカルスナップショットビューを更新して、次のような構成仕様にします。
要素*チェックアウト 要素*.../ martin_2322 / LATEST 要素*/main / LATEST -mkbranch martin_2322 / Project/Applicationをロードします
私のプロジェクトに2つの結合ファイルA.csとB.csがあるとしましょう。最初のタスクでは、ブランチのAに変更を加えます。次に、何らかの理由でタスク2322の作業を停止し、タスク2345の作業を開始する必要があります(タスク2322は終了していないため、メインにマージしません)。新しいタスクブランチ2345を作成し、A.csとB.csの両方を編集して、結果をメインにマージします。ここで2322の作業に戻るので、構成仕様を上記で定義したものに戻します。この時点で、タスクブランチのA.csファイル(以前に編集したので、そのブランチのローカルバージョンを取得します)と最新のファイルが表示されます。メインからのB.csのバージョン。2345ブランチでA.csに変更を加えていないため、ビルドが中断します。代わりに必要なのは、中断したところからタスク2322を取得し、ブランチが作成されたときにメインで最新だった古いバージョンのA.csでそれを表示できるようにすることです。
私の見方では、これを修正するためのいくつかのオプションがあります。
構成仕様を変更して、適切な日付にmainからファイルを取得するようにします。これは、日付がわかっていて手動で設定してもかまわない場合は簡単に実行できますが、これをタスク切り替えスクリプトに自動化する方法がわかりません。ブランチの作成日を取得する方法はありますか?
mainの各ブランチにラベルを作成します。理論的には簡単ですが、CCのインストールのラベリングシステムはすでに数百のラベルの重みで崩壊しているため、ブランチごとに開発者ごとに1つ対応できるかどうかわかりません(私の例のタスクに注意してください)は2322であり、プロジェクトの約4分の1しか進んでいません)
メインからタスクブランチにマージします。もう一度機能するはずですが、長時間実行されているブランチには、そのタスク用に変更されたファイルだけでなく、無関係なものを機能させるためにマージする必要のあるすべてのファイルが含まれます。これにより、開発者ごとのブランチアプローチと同じくらい複雑になります。特定のタスクを完了するためにどのファイルが変更されたかを確認したい。
ここで何かが足りないことを願っています。設定仕様を設定して、厄介な回避策なしでメインから期待されるファイルを取得する方法があります。では、Clearcaseでどのように分岐していますか?