ブランチを作成するにはどうすればよいですか?


回答:


349

Subversionでの分岐は、非常に軽量で効率的なコピー機能によって促進されます。

分岐とタグ付けは実質的に同じです。svn copyコマンドを使用して、リポジトリ内のフォルダ全体をリポジトリ内の別の場所にコピーするだけです。

基本的に、これは慣例により、フォルダのコピーが意味することを意味します-バックアップ、タグ、ブランチなど何でもかまいません。物事についてどのように考えたいかに応じて(通常、過去に使用したSCMツールに応じて)、スタイルをサポートするためにリポジトリ内にフォルダ構造を設定する必要があります。

一般的なスタイルと呼ばれるリポジトリの上部にあるフォルダの束を持っているtagsbranchestrunkあなたはあなたの全体のコピーを可能にする-などtrunkの中に(またはサブセット)tagsおよび/またはbranchesフォルダ。複数のプロジェクトがある場合は、各プロジェクトでこの種の構造を複製することができます。

コンセプトに慣れるまで少し時間がかかる場合がありますが、機能します。使用する規則について、自分(およびチーム)が明確になっていることを確認してください。また、適切な命名規則(ブランチ/タグが作成された理由と、それがまだ適切かどうかを示すもの)を使用することもお勧めします。廃止されたブランチをアーカイブする方法を検討してください。


211
「svn copy」には、分岐前の履歴が保持されるという利点があります。別のディレクトリに手動でコピーすることはできません。
WhyNotHugo 2010年

5
また、「trunk」のサブディレクトリにタグを付けたり、分岐したりすることは、通常はお勧めできません。これにより、どのサブディレクトリが分岐されたかを追跡することが難しくなり、ほとんどのツールはこれらの分岐によって混乱します(たとえば、分岐の切り替えは、WC変更のディレクトリ構造を意味し、IDEとビルドツールを混乱させます)。常に「トランク」を分岐させます。
sleske 2013

1
@Willは実際にsvn cpは安価なコピーを使用し、分岐中に実際のファイルをコピーしませsvnbook.red-bean.com/en/1.1/ch04s02.htmlを
Walty Yeung

607

svn copy次のコマンドを使用して、新しいブランチを作成します。

$ svn copy svn+ssh://host.example.com/repos/project/trunk \
           svn+ssh://host.example.com/repos/project/branches/NAME_OF_BRANCH \
      -m "Creating a branch of project"

24
次に、svn switch svn+ssh://host.example.com/repos/project/branches/NAME_OF_BRANCH .(現在のチェックアウトを新しいブランチに切り替えるsvn checkout svn+ssh://host.example.com/repos/project/branches/NAME_OF_BRANCH場合)または(別のディレクトリに新しいブランチを作成する場合)を使用して、新しく作成されたブランチでの作業を開始します。
JakubNarębski12年

3
注:!で--parentsオプションを使用する必要がある場合もありますsvn copy
JakubNarębski12年

1
何らかの理由でこのcmdを使用したが機能しなかったが、svn + sshをhttpsに変更しただけで機能した。私は何か間違ったことをしましたか?svn + sshの意味は何ですか?ありがとう!
Aviel Gross 2013

最初にブランチに新しいディレクトリを作成する必要があります-> svn mkdir host.example.com/repos/project/branches/NAME_OF_BRANCH -m "ブランチディレクトリを作成してすべてのブランチを保持する"
Silvio Troia '28

-mオプションを省略すると、のようになりsvn: E155010: Path '/home/constantine/someDirectory/svn+ssh:https:/myhost.com/svn/dir1/dir2/trunk/dir3/dir4/dir5' does not existます。では-m、それは述べていますsvn: E205009: Local, non-commit operations do not take a log message or revision properties(アドレスを置き換えましたが、ofc、新しいブランチディレクトリ、および何らかの理由でSVNがエラーにマージしたpath + url全体を除いて、それらは存在します)
Hi-Angel

33

https経由でレポを利用できる場合は、このコマンドを使用してブランチ...

svn copy https://host.example.com/repos/project/trunk \
       https://host.example.com/repos/project/branches/branch-name \
  -m "Creating a branch of project"

26
svn cp /trunk/ /branch/NEW_Branch

トランクにローカルな変更がある場合は、を使用Rsyncして変更を同期します

rsync -r -v -p --exclude ".svn" /trunk/ /branch/NEW_Branch

2
rsyncこのように使用する必要はありません。 svn cpローカルの変更もコピーされます。
Kevin Panko

@KevinPankoコミットされていない変更はコピーされません。
Parag Bafna 2015

4
svnバージョン1.8.5で確認済み
Kevin Panko

私はこれについて疑問に思っています。これは最も簡単なオプションのようです。AFAIは、3年前にSVNを使用していたときに私が行ったことを覚えています。しかし、これとサーバーのURLを直接操作するものの違いは何ですか?
オリゴフレン2016

@KevinPanko新しく作成されたファイルもコピーするかどうか知っていますか?
ジョンハミルトン

16

トランク名(「TEST」など)からブランチを作成するとし、次のコマンドを使用します。

svn cp -m "CREATE BRANCH TEST" $svn_url/trunk $svn_url/branches/TEST


13

新しいSVNユーザー向けのヒント。これは、正しいURLをすばやく取得するのに少し役立ちます。

svn info現在のチェックアウト済みブランチに関する有用な情報を表示するために実行します。

URLは(ルートフォルダーでsvnを実行する場合)、コピー元のURLを提供する必要があります。

また、新しく作成したブランチに切り替えるには、svn switch次のコマンドを使用します。

svn switch http://my.repo.url/myrepo/branches/newBranchName

3
リポジトリルートの代わりに^を使用することもできます
Chim

11

ブランチのマージを計画している場合は、これを確認することを強くお勧めします。

Svnmerge.py

Subversion 1.5はより多くのマージ追跡を組み込んでいると聞いていますが、それについての経験はありません。私のプロジェクトは1.4.x上にあり、svnmerge.pyは命の恩人です!


6
  • 現在のプロジェクトの外に新しいフォルダーを作成します。任意の名前を付けることができます。(例:「Customization」という名前のプロジェクトのチェックアウトがあります。「Project1」、「Project2」などの多くのプロジェクトがあり、「Project1」のブランチを作成したいので、まず「カスタマイズ」を右クリックして新しいフォルダを作成し、「Project1Branch」という名前を付けます)。
  • "Myproject1" .... TortoiseSVN-> Branch / Tagを右クリックします。
  • 作業コピーを選択します。
  • ブラウザーを開く... "To URL"で並列処理のちょうど右。
  • カスタマイズを選択.....右クリックして[フォルダを追加]を選択します。作成したフォルダを通過します。こちらが「Project1Branch」です。追加する[OK]ボタンをクリックします。
  • この新しいブランチをチェックアウトしてください。
  • もう一度、作成するブランチのプロジェクトに移動します。TorotoiseSVN->ブランチ/タグを右クリックします。次に、作業コピーを選択します。また、ブランチ名としてURLを指定できます。{your IP address / svn / AAAA / Customization / Project1Branch}など。また、URLに名前を設定して、この名前のみのフォルダーを作成することもできます。{Your IP address / svn / AAAA / Customization / Project1Branch / MyProject1Branch}のように。
  • OKボタンを押します。これでログが表示されます。作業コピーはブランチに保存されます。
  • これで、チェックアウトして、作業を楽しむことができます。:)

-1

以下は、WindowsマシンでTortoiseSVNを使用してトランクからブランチを作成する手順です。これには明らかにTortoiseSVNクライアントをインストールする必要があります。

  1. ローカルWindowsマシンから更新されたトランクを右クリックします
  2. TortoiseSVNを選択
  3. ブランチ/タグをクリック
  4. SVNリポジトリのToパスを選択します。宛先URLは、指定されたパスとブランチ名に従って更新されることに注意してください
  5. リポジトリブラウザのブランチ内にフォルダを作成しないでください
  6. ブランチパスを追加します。たとえば、branches /
  7. 参照用に意味のあるログメッセージを追加する
  8. [OK]をクリックすると、ローカルシステムに新しいフォルダが作成されます
  9. 新しいフォルダに作成されたブランチをチェックアウトします
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.