2012-10-02 8 views
9

私は、トランクの小さな変化だと思ったことに取り組み始め、1ヶ月間歩きましたが、今は本当に独自のブランチが必要なサイドプロジェクト(バグ満載)です。さらに、これらの変更を分岐したら、作業コピーを現在のトランクに戻したいので、主な開発作業や優先順位の高い項目を助けて、時間があるときにこのサイドプロジェクトに戻ることができます。だから、変更した作業コピーをSVNで分岐するにはどうしたらいいですか?

  1. 私は私の作業コピーをチェックインすることなく、自分の作業コピーに基づいて、新しいブランチを作成したいと思います(それはしかし、最新のHEADリビジョンで最新のものである)

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

どのような手順ですか?私はTortoiseSVNを使用していますが、コマンドラインの指示も役立ちます。

+0

同様の質問[こちら](http://stackoverflow.com/q/1308791/2047122) – Ashley

答えて

3

は、だから私はそれをチェックせずに自分の作業コピーを分岐する二つの方法を試してみた、最善の方法になってしまうしよう​​としているかわからない:

方法1:新しいブランチ

にディレクトリ全体をコピーします。
  • 作業コピーのフォルダを右クリックし、選択しトータスSVN>レポブラウザ
  • レポブラウザでは、「トランク」「枝」インサイド
  • ディレクトリと同じレベルに「支店」と呼ばれる新しいディレクトリを作成します新しいディレクトリを作成するには、 "nあなたのブランチの特別な通知システムで作業している場合は、「通知」などと呼んでください。)
  • (このブランチを識別するラベルは、
  • Repo Browserでまだ右クリックして "Add Folder"を選択し、ローカル作業コピーを選択してください
  • すべてのファイル(.svnファイルを含む)はコピーされているので、これには時間がかかります。これは、svn:ignoredがあるバージョン管理されていないファイルとファイルもコピーします。これは望ましくない可能性があります。

方法2:

  • 支店/タグを使用して右作業コピーのフォルダをクリックし、トータスSVN>支店/タグを選択してください...
  • それはレポブラウザを開きますので、新しいを作成しますディレクトリ "ブランチ"を作成し、その中にブランチの "名前"を持つ新しいディレクトリを追加します
  • "リポジトリのコピーを作成元"セクションの "作業コピー"ボタンを選択します。これは、このブランチへのあなたのローカル変更の差分をコミットするものです
  • これは、HEADリビジョンのものとは異なるファイルのみをコピーしているようです。
  • しかし
  • 、あなたはそこに何があるか確認するために再びレポブラウザを使用している場合、全体のHEADリビジョン+ローカルの変更は、方法2は間違いなく好適であるように見え、すべてが

です。

はその後、クリーンアップするために、それはトータスSVNの問題だった>元に戻し...そしてあなたが転覆「差分」コマンドでパッチを作成することができ、コマンドラインで

+0

方法2は私のためにうまくいった - UIは'17では少し違っていますが、指示が私を邪魔しました。 – Conrad

3

を「すべてのバージョン管理外の削除」、および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 

あなたは奇妙な何かが実際にそれを適用する前に発生したかどうかを確認するために、patchコマンドに--dryランフラグを追加することにより、最初のパッチを実行して乾燥させることができます。

svn patch ..\my_stuff.diff --dry-run 
+0

クール。しかし、作業コピーではなく、トランクリポジトリからdiffファイルを作成しているようですね。または私はこれを誤解していますか? –

+0

svn diffコマンド "作業コピーにローカル変更を表示する"はありません:http://svnbook.red-bean.com/en/1.7/svn.ref.svn.c.diff.html私はローカル変更を取得します。 – crunchdog

+1

私はあなたのソリューションに興味があります。あなたがしているように聞こえるのは、new_branchにパッチを当てて作業コピーと同じようになることです。だから、最初にnew_branchをどうやって取得するのですか? –

1

同じフォルダで作業を続ける場合は、こちらのpostの手順をご覧ください。

基本的にsvn copyブランチを作成して同じ作業コピーから新しいブランチを指すようにし、svn commitを変更して変更をコミットします。

変更を開始した同じブランチ/リビジョンからブランチしてください(チェックするにはsvn info)、切り替え後に多くの競合が発生する可能性があります。

+0

あなたの答えにその投稿を要約することもできます。そうでなければ、そのリンクが死ぬと、あなたの答えは将来のあなたのソリューションに興味のある人には役に立たなくなります。 –

関連する問題