16

トランクへの小さな変更だと思っていた作業を開始し、1 か月間立ち去りましたが、これは本当に独自のブランチが必要なサイド プロジェクト全体 (バグだらけ) であることに気付きました。さらに、これらの変更を分岐したら、作業コピーを現在トランクにあるものにリセットして、時間があるときにこのサイド プロジェクトに戻る前に、主要な開発作業と優先度の高い項目を支援できるようにします。

そう:

  1. 作業コピーをチェックインせずに、作業コピーに基づいて新しいブランチを作成したいと思います (ただし、最新の HEAD リビジョンで最新です)。

  2. 作業コピーをフォークしたら、基本的にブランチにあるすべての変更を削除し、トランクの現在の HEAD リビジョンと一致するように設定したいと思います。

手続きは?私は TortoiseSVN を使用していますが、コマンド ラインの説明も役に立ちます。

4

3 に答える 3

12

そのため、チェックインせずに作業コピーを分岐する 2 つの方法を試しましたが、どちらが最適な方法になるかはわかりません。

方法 1: ディレクトリ全体を新しいブランチにコピーする

  • 作業コピー フォルダーを右クリックし、[Tortoise SVN] > [Repo Browser] を選択します。
  • Repo Browser で、「trunk」と同じレベルに「branches」という新しいディレクトリを作成します。
  • 「ブランチ」ディレクトリ内に、ブランチの「名前」を使用して新しいディレクトリを作成します(「名前」とは、このブランチを識別するラベルを意味します。たとえば、このブランチで特別な通知システムに取り組んでいる場合ブランチ、それを「通知」などと呼びます...)
  • ここで、引き続き Repo Browser で右クリックして [Add Folder] を選択し、ローカルの作業コピーを選択します。
  • すべてのファイル (.svn ファイルを含む) がコピーされているため、これにはしばらく時間がかかります。これにより、バージョン管理されていないファイルや svn:ignored のファイルもコピーされますが、これは望ましくない場合があります。

方法 2: ブランチ/タグを使用する

  • 作業コピー フォルダーを右クリックし、[Tortoise SVN] > [Branch/tag...] を選択します。
  • Repo Browserが開くので、新しいディレクトリ「branches」を作成し、その中にブランチの「名前」を持つ新しいディレクトリを作成します
  • 「リポジトリ内のコピーの作成元」セクションで「作業コピー」ボタンを選択します。これは、ローカルの変更の差分をこのブランチにコミットするものです
  • これは、HEAD リビジョンのものとは異なるファイルのみをコピーするようです。
  • ただし、Repo Browser を再度使用してそこにあるものを確認すると、HEAD リビジョン全体 + ローカルの変更がすべてそこに表示されます。

方法 2 が確実に望ましいようです。

次に、クリーンアップするには、Tortoise SVN>元に戻す...と「バージョン管理されていないものをすべて削除」の問題でした

于 2012-10-02T19:08:46.300 に答える
3

コマンドラインでは、subversion の「diff」コマンドでパッチを作成し、subversion の「patch」コマンドで新しいブランチに適用できます。(これらのコマンドについては、'svn help diff' と 'svn help patch' を実行することで読むことができます)。同じ親ディレクトリにトランクと new_branch というブランチがあるとします。

cd trunk
svn diff > ..\my_stuff.diff

パッチができたら、新しく作成したブランチに適用します。

cd new_branch
svn patch ..\my_stuff.diff 

--dry-run フラグを patch コマンドに追加することで、最初にパッチをドライランして、実際に適用する前に異常が発生するかどうかを確認できます。

svn patch ..\my_stuff.diff --dry-run
于 2012-10-03T06:46:34.393 に答える