web-dev-qa-db-ja.com

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

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

トランクをブランチにコピーしてからcd DIRおよびsvn switchブランチへ?

[〜#〜] update [〜#〜]:答えてくれてありがとう、うまくいきました!手順を要約するには:

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

(点に注意してください)

80
Frank

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

svn copy working_directory url_to_branch
39
wierob

SVN Book( 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."
51
Lucas

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

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

完了:)

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

9
twk

はい、tortoiseSVNと同様にSVNコマンドラインでこれを行うことができます。

SVN workingcopyをsrcとして指定し、新しいブランチを宛先として指定する必要があります

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

コマンド。

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

このような方法でタグを作成することは(トレーサビリティ上の理由から)良いアイデアではありませんが、ブランチの場合は完全に問題ないことに注意してください。

1
Peter Parker