2011-06-15 92 views
3

今天是我玩SVN的第一天。 但是我不能解決的一種情況:SVN協作失敗

我在2臺電腦上籤出 第一臺PC的PC改變了文件中的內容並提交。 第二PC,然後嘗試提交:

Commit failed (details follow): 
File '/classes/ghjs.html' is out of date 

我不得不在第二的PC上運行更新,它會從PC 1的新文件,然後我可以提交重新正常,但變化更新丟失之前完成。

如果你必須提交/更新,然後才能寫出一行代碼,那麼SVN並不是那麼棒,否則其他人在同一個文件上工作並沒有你最新的版本。

我知道沒有什麼可以進行「實時」協作的,但是如果您使用的是舊版本,而不是更新,您可以將更改手動「移植」到最新版本。

我使用「版本」作爲svn客戶端和textwrangler作爲編輯器編輯php代碼。

+0

你應該嘗試使用Subversion命令行客戶端的所有上述操作,看看會發生什麼。 (這些更改會自動合併或在PC 1上的工作目錄中將文件保留爲衝突。)機會是版本不正確或您使用不正確。 – Rafe 2011-06-15 16:55:58

回答

5

我不得不在第二的PC上運行更新, 從PC 1獲得新的文件,然後我 可以重新正常提交,但是變化 更新丟失之前完成。

不,它們不會丟失。他們是合併到您的本地副本(就像您期望的那樣),更新後您可以提交將其添加到存儲庫。如果合併導致衝突,您將收到通知,但仍不會失去工作。

如果您在更新後遺失了您的更改,您做了錯誤的事情 - 我對版本並不熟悉,所以我不能說。

+0

謝謝。你是完全正確的。有用的鏈接:http://svnbook.red-bean.com/en/1.5/svn.tour.cycle.html#svn.tour.cycle.resolve.byhand 有用的菜單/按鈕:操作>標記爲已解決 – Writecoder 2011-06-15 17:00:40

0

對電腦2上文件的本地更改不應在svn update上丟失。它們將與pc1所做的更改合併並提交。如果對發生衝突的相同行進行更改,則在衝突解決之前您將無法提交,並選擇保留任一文件版本的更改。不過,更新後不應該丟失本地更改。

0

然後,您在PC 2上'更新',它應該將PC 1的更改合併到PC 2的工作副本中。如果該文件是在PC 2上編輯的,那麼它應該乾淨地合併它們,或者發出合併衝突,並且可以手動解決它們。

這樣做是爲了讓SVN有合併2個改變的地方。合併是在工作副本中完成的,而不是在服務器上完成的。

如果在更新時PC2的更改丟失了,並且沒有顯示合併錯誤,那確實可能是一個問題。