2013-03-04 37 views
0

我不得不將SVN保護的代碼恢復到早期版本,然後我進行了大量修改。我想將修改後的版本提交給SVN,但是當我嘗試提交時,SVN告訴我必須先更新。我不想這樣做。如何在恢復後強制在SVN中提交工作副本

是否可以指定我的本地版本(工作副本)是新的當前正確版本,而不需要從SVN進行更新?

+0

你必須正確地使用Subversion術語,因爲你不** **恢復(AFAICS)但更新到舊的(非頭)修訂您的WC – 2013-03-05 10:52:19

回答

1

答案似乎是svn up --accept mine-full

+0

這將工作。您基本上將您的更改合併回當前的修訂版。 – 2013-03-04 22:49:37

+0

我試過了。看起來「接受我的」確實告訴svn保留你的工作,但是如果某些目錄被重命名或刪除,它們會在這個命令後重新出現,所以你必須做一些手動清理。但它確實簡化了我的情況。 – Sebas 2016-09-12 15:11:46

0

1)將您的最終代碼庫備份到硬盤中的其他位置。
2)取更新
3)所有從SVN
4刪除)複製粘貼備份驅動器
5)所有的代碼庫提交

OR

你可以,如果有幫助進行清理,我不這樣認爲......

+0

我做了這個(副本和清理),但svn似乎做正確的事情,並跟蹤日期。 – ochensati 2013-03-04 19:56:47

1

你不能承諾除了在變化的樹幹或分支機構。這是所有版本控制系統的嘗試。否則,人們會覆蓋他們想要保留的更改。

有兩件事情可以做:

  1. 去頭,並更新到最新版本。 Subversion不會覆蓋您的更改,而只會更新它的位置。可能會有一些衝突。這一切都取決於你修改的代碼的年齡。例如,我們目前正在修訂版本12,001,並且我檢查了版本11,980,因爲這是我們服務器上的內容,我正在調試它。我在兩個文件中修復了一些小問題。更新到最新版本會更新所有文件,甚至是我所處理的文件,但不會更新我正在處理的那些文件的區域。很可能,這真的是我想要做的。 (當然,一旦你更新,徹底測試!)。
  2. 根據您的修訂版本創建一個新的分支。 Subversion可以在一毫秒內做到這一點。然後,在新分支上提交更改。

讓我們再次假設,我檢查了11980修訂和最新修訂是12,0001:

$ svn co -r 11980 http://path/to/my/project workdir 
$ cd workdir 
...a bunch of changes 
$ svn commit -m"My changes" 
SVN Error: you need to update first... 
$ svn copy -r11900 http://path/to/my/[email protected] http://path/to/branches/my_branch/project 

現在,我有我的工作是作爲一個分支的基地。現在,我要切換到該分支:

$ svn switch http://path/to/branches/my_branch/project 

我的工作目錄位於基於舊版本的新分支上。我的所有更改都未經切換。我現在可以承諾我的更改沒有任何問題。

$ svn commit -m"My changes" 
$ It worked! 

現在,如果我願意,我可以合併我變回原來的項目:

$ svn co http://path/to/my/project workdir2 
$ cd workdir2 
$ svn merge http://path/to/branches/my_branch/project