Re: [問題] SVN的衝突解決
※ 引述《knives ()》之銘言:
: 我現在在學著用ToroiseSVN
: 可是常常會發生
: 錯誤: 送交失敗 (細節隨附):
: 錯誤: File or directory 'user.php' is out of date; try updating
: 錯誤: resource out of date; try updating
: 這樣的衝突,而不能更新
: 有一種我覺得很爛的解決方法就是先把本地的檔案刪了再重新SVN更新
: 如果用更新到某個版本的話
: 程式碼會被追加這樣的字串
: <<<<<<< .mine
: =======
: 不知道大家是怎麼解決衝突
: 謝謝
你應該去看一看 svn 的書 (官方的免費書),
理解一下發生什麼事, 我感覺你好像不太清楚這部份的理念.
這裡發生的一切事都是始於協同工作的時候有衝突.
假設 A, B 二人都在用 svn, 大家協同修改某檔. (假設叫 x.txt)
原本 svn 的 revision 是 100
A, B 都各自 checkout 了 x.txt
B 先修改完, commit 了. svn 的 revision 變為 101
當 A commit 的時候, svn client 作檢查 (其實 B 也有發生這檢查, 只是
他平安過渡而已), 發覺 A 的 working copy 的修改是 基於 rev 100 的
x.txt, 可是 server 上的檔案已經在 rev 101 修改過了, 那麼 svn client
當然不可以卯然把 A 的 x.txt 丟上去, 不然的話, B 的修改不就消失了嗎?
所以才會有說: x.txt out of date; try updating 的訊息出現.
這訊息是叫 A 去做 update, 而 update 就會把 server 上新的 x.txt
拿下來. 然後 svn client 會把 A 之前基於 rev 100 的修改部份, 自動
在 rev 101 的 x.txt 嘗試照樣的修改. 一般來說, 要 A 和 B 修改的部
份沒有重疊, 這個自動 merge 的動作就已經幫你搞定了.
可是萬一 A 和 B 都修改了同一行, svn 又怎麼知道誰改的才對? 這個時
候就會出現 merge conflict, 然後在 conflict 的部份用 <<<<< mine
etc 來指出, 用意只是叫A 修改為 A 認為正確的結果.
所以你要問, 怎麼 resolve conflict 才對, 根本沒有人可以答你,
因為每一次的衝突都不同, 你要自己去判斷才行呀. 有時候, 可能剛
巧另一個同事和你都修改了一樣的東西, 那麼你就可以用他的版本取代,
有時候只是修改的位置重疊, 而修改的內容是不同的, 那麼你當然要
把兩部份都保留下來嘍.
Alien
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.238.156.185
推
07/12 22:51, , 1F
07/12 22:51, 1F
→
07/13 00:44, , 2F
07/13 00:44, 2F
→
07/13 00:44, , 3F
07/13 00:44, 3F
→
07/13 00:44, , 4F
07/13 00:44, 4F
→
07/13 00:45, , 5F
07/13 00:45, 5F
→
07/13 00:45, , 6F
07/13 00:45, 6F
→
07/13 00:45, , 7F
07/13 00:45, 7F
→
07/13 00:46, , 8F
07/13 00:46, 8F
→
07/13 00:49, , 9F
07/13 00:49, 9F
→
07/13 00:49, , 10F
07/13 00:49, 10F
→
07/13 00:50, , 11F
07/13 00:50, 11F
→
07/13 00:50, , 12F
07/13 00:50, 12F
→
07/13 00:51, , 13F
07/13 00:51, 13F
→
07/19 22:49, , 14F
07/19 22:49, 14F
→
07/19 22:49, , 15F
07/19 22:49, 15F
推
07/30 02:32, , 16F
07/30 02:32, 16F
討論串 (同標題文章)
Programming 近期熱門文章
PTT數位生活區 即時熱門文章
7
20