[技術討論]多人併發開發中的問題

qingrun發表於2009-12-27

這裡面涉及到多人併發同時開發一個類的問題,涉及到配置庫管理,程式碼規範化,協調配合開發方面的問題,更多的這裡就不展開了,下面來自水木社群中一個問題的對話中已經說明了很多這方面的問題了。


下面的問題雖然提到分散式版本管理,但其實不是分散式版本管理的問題,而是開發過程中的程式碼管理和開發配合的問題。


發信人: hyperLee (冬瓜de征途~~風雨無阻), 信區: SoftEng
標  題: 請問一個用分散式版本管理軟體的一個難題
發信站: 水木社群 (Sat Dec 26 11:43:45 2009), 站內

用分散式版本控制軟體,好處是每個人有一個倉庫,不需要依賴伺服器。但是現在有個問題。

如果兩個人同時更改了一個原始碼中的同一個函式,這樣在merge的時候,會出現衝突,這時候就需要手工處理衝突了。

我想問一下,手工處理這樣的衝突,是軟體開發的標準環節嗎?還是說所有需要手工處理的衝突,都是可以避免的?


--
 
     昨日的一縷英魂,今日的萬里長城。


※ 來源:·水木社群 newsmth.net·[FROM: 159.226.230.*]

[本篇全文] [回覆文章] [本篇作者:Dieken] [回信給作者] [進入討論區] [返回頂部]
2
發信人: Dieken (風催草低 - 明月何嘗不照人), 信區: SoftEng
標  題: Re: 請問一個用分散式版本管理軟體的一個難題
發信站: 水木社群 (Sat Dec 26 11:55:44 2009), 站內

衝突是難免的,儘快、頻繁的提交、更新就是了。

【 在 hyperLee (冬瓜de征途~~風雨無阻) 的大作中提到: 】
: 用分散式版本控制軟體,好處是每個人有一個倉庫,不需要依賴伺服器。但是現在有個問題。
: 如果兩個人同時更改了一個原始碼中的同一個函式,這樣在merge的時候,會出現衝突,這時候就需要手工處理衝突了。
: 我想問一下,手工處理這樣的衝突,是軟體開發的標準環節嗎?還是說所有需要手工處理的衝突,都是可以避免的?
: ...................

--

※ 修改:·Dieken 於 Dec 26 11:55:54 2009 修改本文·[FROM: 123.123.2.*]
※ 來源:·水木社群 newsmth.net·[FROM: 123.123.2.*]

[本篇全文] [回覆文章] [本篇作者:dinny] [回信給作者] [進入討論區] [返回頂部]
3
發信人: dinny (mumble is a penguiner), 信區: SoftEng
標  題: Re: 請問一個用分散式版本管理軟體的一個難題
發信站: 水木社群 (Sat Dec 26 11:59:27 2009), 站內



【 在 hyperLee (冬瓜de征途~~風雨無阻) 的大作中提到: 】
: 用分散式版本控制軟體,好處是每個人有一個倉庫,不需要依賴伺服器。但是現在有個問題。
: 如果兩個人同時更改了一個原始碼中的同一個函式,這樣在merge的時候,會出現衝突,這時候就需要手工處理衝突了。
: 我想問一下,手工處理這樣的衝突,是軟體開發的標準環節嗎?還是說所有需要手工處理的衝突,都是可以避免的?

merge是版本控制/配置管理中的重要環節,但並不是說它就是軟體開發的某個環節,不是一個層面的內容。

兩個功能模組共享同一檔案(如標頭檔案)並且在某一開發環節都需要改動這個檔案,那麼出現衝突再所難免。一般來說,在本地改動之前針對repo做個pull,然後對branch進行rebase,可以減少merge時的衝突。

同時經常提交更改,儘量減少每次提交的更改程式碼量也有用處。

: ...................

--
農夫,山泉,有點田。


※ 修改:·dinny 於 Dec 26 12:02:03 2009 修改本文·[FROM: 61.148.56.*]
※ 來源:·水木社群 newsmth.net·[FROM: 61.148.56.*]

[本篇全文] [回覆文章] [本篇作者:qingrun] [回信給作者] [進入討論區] [返回頂部]
4
發信人: qingrun (青潤), 信區: SoftEng
標  題: Re: 請問一個用分散式版本管理軟體的一個難題
發信站: 水木社群 (Sat Dec 26 12:46:51 2009), 站內

如果你的團隊在開發前定義好每個人的方法屬性命名規則,做好區分,開發過程中對方法進行清晰的定義和區分,那麼發生衝突的地方就會少很多,另外,即使出現 了衝突需要merge,也可以通過工具直接merge成功——cc就能完全做到這一點(01年使用cc的時候發現的),但是如果你前面的美定義好,那麼這 個 merge就可能非常麻煩了。那就可能必須雙方都配合修改程式碼才有可能了。呵呵。

【 在 hyperLee (冬瓜de征途~~風雨無阻) 的大作中提到: 】
: 用分散式版本控制軟體,好處是每個人有一個倉庫,不需要依賴伺服器。但是現在有個問題。
: 如果兩個人同時更改了一個原始碼中的同一個函式,這樣在merge的時候,會出現衝突,這時候就需要手工處理衝突了。
: 我想問一下,手工處理這樣的衝突,是軟體開發的標準環節嗎?還是說所有需要手工處理的衝突,都是可以避免的?

--
我很傻,但是我很能幹
軟工類技術blog:blog.csdn.net/qingrun,等待100萬訪問。

※ 來源:·水木社群 http://newsmth.net·[FROM: 162.105.244.22]

[本篇全文] [回覆文章] [本篇作者:canper] [回信給作者] [進入討論區] [返回頂部]
5
發信人: canper (洗衣粉), 信區: SoftEng
標  題: Re: 請問一個用分散式版本管理軟體的一個難題
發信站: 水木社群 (Sat Dec 26 13:36:22 2009), 站內


 基本上我們都調成鎖定模式,要改之前先鎖定吧
【 在 hyperLee (冬瓜de征途~~風雨無阻) 的大作中提到: 】
: 用分散式版本控制軟體,好處是每個人有一個倉庫,不需要依賴伺服器。但是現在有個問題。
: 如果兩個人同時更改了一個原始碼中的同一個函式,這樣在merge的時候,會出現衝突,這時候就需要手工處理衝突了。
: 我想問一下,手工處理這樣的衝突,是軟體開發的標準環節嗎?還是說所有需要手工處理的衝突,都是可以避免的?
: ...................

--
     在我頭上做窩的螞蟻,你們保重


※ 來源:·水木社群 newsmth.net·[FROM: 113.96.185.95]

[本篇全文] [回覆文章] [本篇作者:qingrun] [回信給作者] [進入討論區] [返回頂部]
6
發信人: qingrun (青潤), 信區: SoftEng
標  題: Re: 請問一個用分散式版本管理軟體的一個難題
發信站: 水木社群 (Sat Dec 26 19:21:14 2009), 站內

更改之前先鎖定的方式,在很多專案中是無法使用的,並行開發和時間的逼迫,都會出現不能鎖定某一個淚來進行兩個甚至更多人的並行修改和開發的。
鎖定,類似於多執行緒的鎖機制,有可能出現死鎖,那時候,就是另一個技術風險引起的多種風險併發症了。呵呵

【 在 canper (洗衣粉) 的大作中提到: 】
:  基本上我們都調成鎖定模式,要改之前先鎖定吧

--
我很傻,但是我很能幹
軟工類技術blog:blog.csdn.net/qingrun,等待100萬訪問。

※ 來源:·水木社群 http://newsmth.net·[FROM: 162.105.244.22]

[本篇全文] [回覆文章] [本篇作者:hyperLee] [回信給作者] [進入討論區] [返回頂部]
7
發信人: hyperLee (冬瓜de征途~~風雨無阻), 信區: SoftEng
標  題: Re: 請問一個用分散式版本管理軟體的一個難題
發信站: 水木社群 (Sun Dec 27 09:51:05 2009), 站內

多謝各位高人指點,受教了!

--
 
     昨日的一縷英魂,今日的萬里長城。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/257598/viewspace-623691/,如需轉載,請註明出處,否則將追究法律責任。

相關文章