1

Nov12単一のprocをブランチからにマージしようとしていmainます。このリファレンスを検索した後、ブランチからメインにコピーをマージする必要があることがわかりました

Merge version 1 on the branch into the "latest" version in the "main" branch:
ct merge -to new_update.sql -insert -version /main/Nov12/1

これを実行した後、私は次のように出力を取得しました

Trivial merge: "new_update.sql" is same as base "/home/mtk/ct/new_update.sql@@/main/Nov12/0".
Copying "/home/mtk/ct/new_update.sql @@/main/Nov12/1" to output file.
Output of merge is in "new_update.sql.merge".

new_update.sql.mergeローカルディスク上の完全なprocが含まれていますが、クリアケースバージョン管理には含まれていません。私はこれct lshを確認するために行いました。

メインに新しいバージョンを作成し、更新されたコピーをその中に配置する必要がありました。つまり、まだ存在しない/ main/9です。最新/mainバージョンは8です。

したがって、単一のプロシージャをマージする方法。メインからコピーをチェックアウトしてから、上記のコマンドを実行する必要がありますか?私に知らせてください、私はこれについてはっきりしていません。グラフィカルな代替手段が利用できないため、これにはコマンドラインソリューションが必要です。

4

2 に答える 2

2

でバージョンを作成するには、ビューセットにいる必要があります/main
代わりに、マージでバージョンを作成したかったNov12

「サブブランチから選択したバージョンをマージするには」ページで、使用しているマージについて詳しく説明しています。

cleartool merge [ -graphical ] -to target-path -insert contributor-version-selector  [contributor-version-selector]

ただし、最初にターゲットバージョンをチェックアウトする必要もあります。
つまり、マージする前であっても、バージョンツリーにバージョンの後に作成されたバージョンが表示されるはずです/main/8

したがって、新しいバージョンを作成するために作成された正しいターゲットビューでマージを再試行してください/main

于 2012-11-28T07:28:00.470 に答える
2

問題は、出力の行き先を指定しなかったためnew_update.sql.merge、現在のビューのターゲットブランチにcspecが設定されていると仮定して、ファイルに配置されたことだと思います/main。(ビューがブランチを参照していない場合/mainは、間違ったビューにマージされています。)これで次のことができます。

mv new_update.sql.merge new_update.sql

次に、あなたまたはClearCaseのいずれかが必要なチェックアウトを行ったと想定して、チェックインを行います。


それは私が通常マージを行う方法ではありません—しかしそれはそれが無効であると言っているわけではありません。私が使用するメカニズムはct findmerge、ログファイルからコマンドを実行することです。2つのビューがあります。1つはNov12ブランチのcspec(ビュータグはnov12)で、もう1つ(現在のビュー)はメインブランチのcspecです。

ct findmerge -ftag nov12 new_update.sql

出力には、次のような行が含まれる場合があります。

Needs Merge "./samizdat.c" [(automatic) to /main/XYZ.1.70/0 from /main/XYZ.1.70
    /TEMP.bug233636.jleffler/1 (base also /main/XYZ.1.70/0)]

これにより、次のような名前のログファイルが生成されます。

findmerge.log.2012-11-27T23:12:43-08:00

ファイルの内容は次のようなコマンドです。

cleartool findmerge ./samizdat.c -fver /main/XYZ.1.70/TEMP.bug233636.jleffler/1 -log /dev/null -merge -cqe

-merge「非グラフィックマージ」(グラフィックの-gmerge場合)を意味します。-cqe「チェックアウトごとにコメントをクエリする」という意味です(私は常にそれをに置き換え-c "Bug 233636: Brief title for bug"ます)。

それがビジネスを行うための可能な限り迅速な方法であるかどうかは疑問ですが、それは私にとってはうまくいきます。私はファイル名とブランチ名を偽装しましたが、レビューが承認されたと仮定すると、ミニ(マイクロ?)機能のために約20個のファイルのマージとチェックインを(多かれ少なかれ)行う方法です。私はこれらのものの多くを駆動するためのカバースクリプトを持っているので、私のコマンドシーケンスは実際には次のようになります:

fmp -l log 233636 /vobs/project/ /vobs/auxilliary
fmm log
ct ci -c 'Bug 233636: Brief title for bug' $(ct lsco -avo -cvi -s)

fmp(マージと印刷の検索)スクリプトは最初findmergeに実行され、出力はファイルに送られますlog。(マージのfmm検索とマージ)スクリプトは実際のマージを実行し、マージされるファイルの最後のチェックインメッセージを自動的に提供します。ct最後の行は、選択したコメント(のエイリアス)を使用してチェックインを行い、cleartoolによって提供されたコメントをオーバーライドしますfmm

于 2012-11-28T07:28:41.753 に答える