Subversion:チェックアウト、変更、そしてブランチにすることはできますか?


80

トランクからローカルDIRにチェックアウトし、そこで多くのローカル変更を行いました。今はトランクにコミットしたくありませんが、このローカルバージョンからブランチを作成したいと思います。それは可能ですか?

私はちょうどブランチにトランクをコピーし、することができますcd DIRし、svn switch枝に?

更新:答えをありがとう、それはうまくいきました!手順を要約すると:

  • cd DIR
  • svn copy . new-branch-URL
  • svn switch new-branch-URL .

(ドットに注意してください)


はい、できます。私はtortoiseSVNを使用していますが、その中でそれを行うことができます。
ニック

を使用して競合が多すぎることがわかったのでsvn switchnew-branch-URL後で新しいコピーをチェックアウトすることにしましたsvn copy
fikr4n 2013年

回答:


39

コマンドラインヘルプによると、svncopyはディレクトリからリポジトリのURLにコピーできます。したがって、作業コピーをブランチにコピーできるはずです。例:

svn copy working_directory url_to_branch

52

SVNブック(http://svnbook.red-bean.com/en/1.6/svn-book.html#svn.branchmerge.using.create)は、ローカルの作業コピーからブランチを作成することを推奨していません。

を使用svn copyして作業コピー内のディレクトリを複製することでブランチを作成することもできますが、この手法はお勧めしません。実際、かなり遅くなる可能性があります。クライアント側でディレクトリをコピーすることは、ローカルディスク上のその作業コピーディレクトリ内のすべてのファイルとサブディレクトリを実際に複製する必要があるという点で、線形時間操作です。

代わりに、最初にブランチを作成してからsvn switchコマンドを使用して、変更をコミットできるようにします。作業コピーがトランクで大幅に古くなっている場合は、ソースURLに「@REV」を追加します。「REV」は、によって報告された作業コピーのリビジョンですsvn info

ただし、サーバー上のディレクトリのコピーは一定時間の操作であり、ほとんどの人がブランチを作成する方法です。

$ svn copy http://svn.example.com/repos/calc/trunk \
           http://svn.example.com/repos/calc/branches/my-calc-branch \
      -m "Creating a private branch of /calc/trunk."

2
この答えをありがとう。これは、改訂履歴を維持するため、より優れたソリューションです。
evanflash 2012年

3
ローカルの作業コピーに変更があった場合svn copy <trunk-URL> <newBranch-URL>、トランクをsvnサーバーの新しいブランチにsvn switchコピーしてから、作業コピーで使用して、変更を失うことなく新しいブランチに切り替えることができるということですか?または、スイッチはコミットされていない変更されたファイルを強制終了しますか?
カサポ2012

3
@Kasapo、そうです。また、トランクが古くなっているかどうかにも注意してください。その場合は、前述のようにソースURLに「@REV」を追加して、ブランチに切り替えた後、ローカルの変更のみが差異として表示されるようにします。
ルーカス

ルーカスのソリューションをより詳細に説明する非常に便利なリンクを追加しましょう:svnbook.red-bean.com/en/1.6/svn.branchmerge.switchwc.html(下部の情報ボックスを見てください)。これは確かに、ローカルの変更からブランチを作成するための最もクリーンで最も便利なソリューションです。
スピロス

9

私のSVNクライアント:TortoiseSVNでは、次のことで十分です。

  • 分岐したいトップディレクトリを右クリック
  • [URLへ]でリポジトリ内のブランチディレクトリを選択します
  • フレーム「リポジトリにコピーを作成元:」で「作業コピー」を選択します

完了:)

ローカルバージョンを指定されたリポジトリのURLにコピーするのと同じです。


1

はい、これはSVNコマンドラインtortoiseSVNで実行できます。

SVNワーキングコピーをsrcとして指定し、新しいブランチを宛先として指定する必要があります

svn copy <file/path/to/working/copy> <URL/TO/REPOSITORY/BRANCH>

コマンド。

TortoiseSVNで、作業コピーをポイントし、コンテキストメニューから[ブランチ/タグ]を選択し、[リポジトリにコピーを作成する場所]セクションで[作業コピー]を選択します。

(トレーサビリティの理由から)このような方法でタグを作成することはお勧めできませんが、ブランチの場合はまったく問題ありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.