作者zzss2003 (brotherD)
看板Soft_Job
標題[請益] 當SVN update後,檔案遇到三方衝突...
時間Sat Oct 5 13:58:26 2019
https://imgur.com/a/pPbv9EU
我update之後,有幾個衝突檔(圖一)
點開第一個衝突的檔案mac.c,竟然是三方衝突!?(圖二)
我以為衝突是發生在working copy與repository之間,為什麼是三個? 從圖二來看很清楚
可以知道最右邊的mac.c.mine是working copy,但我就不懂r2216與r2240,哪一個才是在
repository上面
所以我在該衝突檔mac.c點右鍵,選取show log,想知道在repository上面正確的版本是
2216還是2240(圖三),但發生了不知道怎麼解釋的狀況...似乎是路徑不存在嗎?(圖四)
煩請大大過目一下,指點一下小弟。謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.216.40.132 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1570255108.A.5B2.html
※ 編輯: zzss2003 (61.216.40.132 臺灣), 10/05/2019 13:58:57
1F:推 yamakazi: 表示你check out後有人check in啊 就自己看一下哪邊conf 10/05 14:03
2F:→ yamakazi: lict手動resolve就好 要自動resolve也行 10/05 14:03
3F:→ yamakazi: 下次怕conflict可以先鎖起來 有人幹譙再解鎖 10/05 14:05
我能理解會發生conflict是因為我在checkout與update的這期間,有人又checkin,但我不
理解的是,為什麼會有三方衝突?
換句話說,如果我當初checkout下來的版本是N,且當前在repository上面的版本是N+2,
那麼衝突只會發生在N與N+2之間。
但是在這個情況,是三方衝突,我不了解為什麼會多出第三個版號
※ 編輯: zzss2003 (61.216.40.132 臺灣), 10/05/2019 14:10:15
4F:推 yamakazi: 假設原本版號N 你在第一行改動 版號變N+2 別人在第二行 10/05 14:25
5F:→ yamakazi: 改動並check in版號N+1 你要check in時 repo不曉得第二 10/05 14:25
6F:→ yamakazi: 行到底要照N+1還是N+2 就會把N N+1 N+2全部顯示要你reso 10/05 14:25
7F:→ yamakazi: lve 因為repo知道你並不是在最新版上作第一行改動 10/05 14:25
8F:推 yamakazi: 因為你N+2只改了第一行 但第二行跟N+1不同 這個不同不是 10/05 14:28
9F:→ yamakazi: 因為你改動而是你用到舊版本 repo會知道所以要你resolve 10/05 14:28
抱歉我沒辦法完全理解你想表達的意思,但我認為你想表達的是:
從SVN角度看到的版本有三個,分別是
1. 一開始我從repo checkout下來的原始版本,看起來是r2216
2. repo上面目前的最新版本,r2240
3. 我從r2216開始更改的版本,mine
所以說,SVN除了把mine跟2240的衝突呈現給我看以外,也順便把最一開始的2216版本順便
一起呈現出來
※ 編輯: zzss2003 (61.216.40.132 臺灣), 10/05/2019 15:47:07
10F:→ v7q4: 最後上的人 解決所有conflict就好了啊 10/05 18:02
11F:→ LINGZ: 若僅checkout, update, 沒變更worksapce的檔案就應無衝突 10/07 07:18