0

私は CVS にあまり詳しくありませんが、私の職場では、次のような形の CVS のプロジェクトがあります。

------A-------B  D         Main branch
      |
      |----------C         My branch

タグ A のプロジェクトが機能します。タグ B ではそうではないので、A は生産中です。これはすべて何年も前に行われました。Aに変更を加えたいのですが、Bについてはよくわからないので、触れたくないのでブランチを作成します。C では、自分の変更が重要であり、B は無関係であると判断しました。C にあるものはすべてメイン ブランチの D に配置し、A から B までのすべてを無視します。

私の職場の誰かが、OS を介してメイン ブランチの内容の上に自分のブランチの内容をコピーするよう提案しましたが、それは履歴を壊すので、最初に Stack Overflow にもっと良い解決策を求めるべきだと言いました。

私はこれをすべて Eclipse で行っているので、ワークスペースで A を開き、C をそれにマージし、結果を head にコミットし、すべての違いについて自分の側を優先して、D を取得するという考えでした。 AC から D へのマージが期待どおりにならないのではないかと心配していますが、これを壊したくはありません。

私の質問は、これは私が期待することをするでしょうか? そうでない場合、同僚の提案よりも安全な方法は何ですか?

4

3 に答える 3

0

いいえ、それは私が期待することをしませんC を A にマージすると期待どおりに動作しますが、AC を B にコミットすると、HEAD タグ (B) ではなく A タグの下で作業しているため、古いタグのみが変更されます。

提案された方法の代わりに、逆の順序で、またはすべてを一度に実行する必要があります。HEAD を A に戻してから、ブランチをマージするか、同時にマージすることができます。Eclipse の CVS には、これをきれいに行う簡単な方法はありませんが、きれいに行うには面倒な方法があります。

  • ワークスペースで HEAD を開きます。
  • プロジェクトを右クリック -> 比較対象 -> 別のブランチまたはバージョン...
  • 分岐点 (A) または HEAD を置き換えたい分岐の終点 (C) を選択します。
  • 同期ビューには、2 つのバージョン間で異なるすべてのファイルが表示されます。
  • 異なるファイルごとに、パッケージ エクスプローラー ビューに戻り、右クリック -> 履歴... (「別のブランチまたはバージョン...」ではなく、一度に複数のタグを操作してコミットするため)いろいろなところに行きます)。次に、保持したいファイルのバージョンを含むタグを選択します (比較対象に応じて、A または C)。
  • 残りの差異がなくなったら、コミットします。

Cと比較すると、どちらの分岐も同じ状態です。あなたは終わった。Dはあなたが望むものを手に入れます。

代わりに、A と比較すると、C を HEAD にマージできるようになりました。もう一度コミットすると、D は必要なものを取得します。

于 2012-08-10T04:55:39.903 に答える
0

CVS を使用する必要がある場合は、WinCVS を使用することを好みます。私たちのレガシーなもののいくつかは CVS を使用しており、それは苦痛です。

SVN とまったく同じ方法でメイン ブランチにマージして戻しますが、見た目はずっと複雑です。WinCVS で簡単になるかどうかを確認し、お知らせください。ただし、コピーして再投稿しないでください。これは本当に悪いアプローチです。

于 2012-08-09T02:21:53.257 に答える
0

http://www.eclipse.org/articles/article.php?file=Article-BranchingWithEclipseAndCVS/article2.htmlは、CVS マージ機能を簡単に示しています。これを利用するには、HEAD から分岐したポイントを表すタグを見つける必要があります。

于 2012-08-09T06:29:37.737 に答える