2009-08-20 38 views
76

我做了一個從我的箱子到本地DIR的結帳,並在那裏做了很多本地修改。現在我不想將它提交回主幹,但我寧願從這個本地版本創建一個分支。那可能嗎?Subversion:我可以檢出,修改,然後使其成爲分支嗎?

我可以只將樹幹複製到分支,然後cd DIRsvn switch分支?

UPDATE:感謝您的答案,它的工作!總結如下步驟:

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

(注意點)

+0

我發現太多的衝突通過使用'SVN之開關,所以我選擇了後'SVN copy'檢出從'新分支URL'的全新副本。 – BornToCode 2013-03-17 02:41:42

+0

是的,你可以。我使用tortoiseSVN,你可以這樣做。 – Nick 2009-08-20 21:10:34

回答

38

根據其命令行幫助SVN拷貝可以從目錄複製到存儲庫URL。所以,你應該能夠在您的工作副本複製到分支,例如:

svn copy working_directory url_to_branch 
9

在我的SVN客戶端:TortoiseSVN的就足夠了:

  • 右鍵點擊上面的目錄我想分支
  • 「到URL」在你的框架「從庫中創建副本:」庫
  • 選擇分支目錄中選擇「工作副本」

完成:)

這就像複製本地版本到指定的存儲庫URL一樣。

1

是的,你可以通過SVN命令行以及TortoiseSVN的做到這一點。

你必須指定SVN workingcopy爲src和你的新的分支作爲

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

命令的目的地。

在TortoiseSVN的只是點到你的工作拷貝,從文本菜單中選擇「科/標籤」,然後選擇「工作副本」一節中的「從庫中創建副本:」

請注意,這不是一個好想法(爲了可追溯的原因)以這種方式創建標籤,但對於分支來說,它是非常好的。

50

SVN書籍(http://svnbook.red-bean.com/en/1.6/svn-book.html#svn.branchmerge.using.create)不建議從本地工作副本創建分支。

雖然它也可以創建使用svn copy複製的工作副本內的一個目錄的一個分支,不建議使用這種技術。實際上它可能非常緩慢!在客戶端複製目錄是一個線性時間操作,因爲它實際上必須複製本地磁盤上該工作副本目錄中的每個文件和子目錄。

相反,首先創建分支,然後使用svn switch命令,以便您可以提交更改。如果您的工作副本顯着過期,請將「@REV」附加到源URL,其中「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-01-20 20:43:46

+3

這是否意味着如果我在本地工作副本中有更改,我可以執行'svn copy '將主幹複製到svn服務器上的新分支,然後在我的工作副本中使用'svn switch'切換到新分支而不會丟失任何更改?或者,交換機會殺死未提交的修改文件? – Kasapo 2012-09-14 16:22:18

+3

@卡薩波,是的沒錯。還要注意你是否過時了;如果是這樣,請按照我的說明在源URL中添加「@REV」,這樣在切換到分支後,只有您的本地更改顯示爲差異。 – Lucas 2012-11-08 04:07:20

相關問題