2012-04-03 72 views
0

我對通常在svn中使用的工作流感興趣。如果我進行更新(這是在沒有持續集成或自動迴歸測試的環境中)以獲取其他登錄的更改,有時候會發生可怕的錯誤。某些功能 已損壞,甚至可能需要大量時間來追查誰是負責人或退回變更......在這種情況下,我只想讓我的「更新前」環境回來......如果svn更新了我的本地環境如何回滾?

這種情況下的規範是什麼?我希望我的問題很清楚。

回答

1

由您可以重新基地工作拷貝:

svn update -r <revision_before_trouble> 
  • svn客戶端將反向合併當前工作拷貝的版本,你要更新到舊版本之間的變更。對於SVN,合併或反向合併是相同的 - 它只是將差異應用於文件。

  • 您的本地更改不受影響。如果在本地更改和反向合併的變更集之間存在衝突,則通常的SVN合併過程適用 - 即,您使用svn resolve來選擇要保留的更改。你不會簡單地失去你所有的本地變化。

  • 此過程將使您的工作副本恢復到故障發生前的狀態。

+0

這會不會不僅僅是使我的目錄拷貝那麼複雜,如果情況不把它重命名回來? – treefrog 2012-04-04 04:17:22

+0

是的!恕我直言,讓工具爲你做好工作 - 這就是SVN設計的目的,讓你的生活更輕鬆。如果您第一次做這件事感到緊張,請繼續爲安全起見覆印一份工作副本,但您不應該這樣做。 SVN很棒! – 2012-04-04 12:36:22

+0

我認爲它是一種改變,而不是取消改變......我目前對信任工具非常緊張......長期故事我希望這不會導致一些創傷障礙(沒有任何違法行爲有真正問題的人) – treefrog 2012-04-05 20:09:46

0

您可以隨時更新回特定修訂版本號。

svn up -r <revision_number> 
+0

它適合你嗎? – 2012-04-03 14:37:02

+0

@LazyBadger對不起,我對這個選項感到困惑,在我的m/c上沒有svn安裝,否則我可以用svn檢查--help – 2012-04-03 19:31:49

+0

你有[Net](http://svnbook.red-bean.com /en/1.1/re28.html)和[Google](http://www.google.ru/search?client=safari&rls=zh-CN&q=svn+help+update&ie=UTF-8&oe=UTF-8&redir_esc=&ei=qVF7T- j7DI2ZOrSc7MoC) – 2012-04-03 19:39:14

1

如果你只是回滾到以前的版本號,你也將失去你更新之前所做的潛在的局部變化(在你的工作副本),那些你沒有決定命運之前提交到服務器更新,但在更新期間合併。

通常,每個需要提交更改的人都需要首先更新自己的版本,並檢查一切是否穩定,「測試」或至少是編譯過的(我更喜歡它是防彈的下一個來)。然後,進行他/她的更改。 因此,一旦您需要更新,您至少需要在一個環境中保留此更新。

如果您正在使用的其他人不合作,您可以自己創建分支,並在需要時執行合併。您可以在分支上提交您在合併之前所做的任何更改。因此,如果發生嚴重破壞,它們將被保留。 您可以嘗試的另一件事是評估「誰」擾亂了大多數存儲庫(就以前版本的穩定性而言),並建議他們暫時在另一個分支上開發。

+0

好聰明! – 2012-04-03 15:40:50

+0

我在沒有迴歸測試甚至功能測試的環境中工作。我們沒有機會創建我們自己的分支機構。 SVN回購是嚴格控制。所以我必須考慮一個備用解決方案。我真的需要幫助。我可以對我的工作區進行備份嗎?這樣做最快的方法是什麼?我可以編寫一個小腳本來封裝所有這些,並有一些回滾,另一個問題是,env有其他依賴關係,與checkin結合,可以打破我的env,即使開發者在簽入之前測試過東西,回滾只有optin – treefrog 2012-04-04 04:15:14

+0

@treefrog然後,[Colin](http://stackoverflow.com/users/116166/william-leara)的解決方案更好。 – 2012-04-04 11:43:58

相關問題