2013-02-01 41 views
3

到目前爲止,我們的開發團隊已經使用基於鎖的SCM(源代碼管理)系統。最近,我們面臨着用新的,更好的系統取代系統的必要性。爲什麼基於合併的SCM比基於鎖的系統更好?

作爲一個新系統,我建議使用Git。 除了包括我們在內的幾個成員之外,他們從未聽說過Git。 所以我給了一些解釋。

問題是他們認爲合併系統而不是鎖定系統是爲了保證源代碼的完整性不安全。

即使我解釋了Git的系統以及許多着名的項目,其中 已經在使用Git系統和其良好的聲譽,但他們從未在Git中感到寬慰。

我怎樣才能讓他們放心呢? 以及我如何解釋合併不是問題?

+4

如果成千上萬的開發人員連續發展歷史的七年都同時工作,記錄在每個linux回購中,但還不足以證明可靠性,因此很難知道該做什麼。但是沒有任何東西可以阻止你使用git:製作一個你的svn或任何工作樹的repo,在你獲取它們時提交更新,工作在一個克隆中,做你自己的合併,然後推送到你的雙代理回購,並檢查結果基於鎖的回購。你爲自己的工作獲得所有好處,其他人可能會開始注意。 – jthill

+2

基於鎖的系統比基於合併的系統需要更多的關注。如果有人將某些東西鎖定並且離開一天,沒有其他人可以觸摸該文件而不應用某些非常醜陋的技巧。在基於合併的系統中,這個問題不存在。合併對於軟件開發人員來說不是一件難事。 – confusopoly

回答

0

本身基於合併的系統並不比基於鎖的系統好。這一切都取決於你的項目。如果你有不可合併的文件,基於鎖的系統可能會更好。

但是,如果我明白你的問題是正確的,你想知道如何輕鬆你的同事。

你可能會認爲,linux是一個很好的例子,即基於鎖的系統永遠無法實現linux開發。然而,linux有一個巨大的開發基地,你的團隊可能沒有。所以這不是一個爭論。如果對您沒有任何問題,則可伸縮性和多用戶的所有好處都不適用。

但是,您的同事擔心代碼的完整性。這就是爲什麼你應該改變系統。基於鎖的方法是以文件爲中心的。 (當然有像svn這樣的問題的中間解決方案,但假設你使用類似cvs或vss的東西)。然而,單個文件很少由其自己分發。

也就是說,一個文件的更改會影響其他文件,因爲它們相互通信。使用基於鎖定的方法,您永遠無法確定您的更改會如何影響其他同事更改。如果您將文件A更新爲版本2並使用文件B第1版對其進行測試,然後將您的同事將文件B更新爲版本2,您會如何知道它會起作用?你的同事爲什麼會認爲這可能是一個問題?他只碰到文件B,他爲什麼要測試文件A?

使用git,您可以採用基於系統的方法解決問題。每次更改都是對整個存儲庫的更改,並且您始終可以擁有可以保證正常工作的版本。重點是,只看文件,無論如何你都要完成代碼的完整性。