2012-07-05 137 views
2

我正在與其他使用SVN的開發人員合作。我是SVN的新手,我想更好地瞭解如何使用SVN。SVN介紹

在目前我們有:

      __ branch developer 1 
Project 1     /___ branch developer 2 
     |     /____ branch developer 3 
     |____ branches---- \____ branch developer 4 
     |     \___ branch developer 5 
     |____ tags   \__ branch developer 6 
     | 
     |____ trunk 

他們問我,開始前下發展,到:

  1. 更新我的分公司
  2. 從其他分支合併我的分支和解決衝突,因此我必須從dev1,dev2,dev3等合併... 提交我的作品

現在,我的問題是...這是正確的接近?每次都需要很多時間來做這麼多的合併。或者我們應該只爲所有開發人員使用一個分支?我對SVN真的很陌生,我不想做一些錯誤的事情......所以我會非常感謝你的幫助,讓我走上正確的道路。

+0

http://stackoverflow.com/questions/34975/branching-strategies – 2012-07-05 09:20:07

+1

http://www.codinghorror.com/blog/2007/10/software-branching-and-parallel-universes.html – 2012-07-05 09:20:58

+0

謝謝!很有幫助! – Uncoke 2012-07-05 09:55:01

回答

3

不,這不是使用SVN的正確方法。每個開發者都沒有理由擁有自己的分支。

通常,每個人都在幹線上工作。如果某些功能需要很長時間才能開發,並且不能在主幹上進行以避免干擾其他開發人員,則需要制定特定的功能分支。樹幹的更改會定期合併到此功能分支,一旦該功能完全在其自己的功能分支中開發完成,該分支將重新集成到主幹中,並被刪除。

如果每個人都必須不斷從其他人的分支中合併,那麼與在主幹上工作並沒有什麼不同,除非它更加痛苦。無論如何,它不會擴展到超過2或3個開發人員。

我建議您閱讀免費提供的SVN book,其中詳細解釋了上述所有內容,並與您的同事討論使其採用傳統的最佳做法。

+0

謝謝JB!我對我們的戰略非常困惑......並且你在確認我的懷疑:合併很多分支機構就像在單一的後備箱裏工作......我同意!謝謝!現在我想問'堆'如何延長一天到48小時:) – Uncoke 2012-07-05 09:59:54

2

我個人認爲目前的實現是瘋了。目前有7個分支機構(每個開發者一個),每個分支機構需要進行七次合併才能開始任何工作。

只要有更多的開發人員加入到團隊中,合併策略變得非常麻煩並且容易出現更多錯誤。您可能需要編輯X個分支中的衝突,然後才能開始自己的開發。

我會讓每個開發人員在存儲庫的主幹上工作。在處理一個repo目錄時,更容易管理衝突解決和合並。

理想情況下,您希望在敏捷的工作流程中工作(小型可管理的工作塊),只需幾天即可完成。任何比這更長的項目都可能擁有自己的分支文件夾,純粹是爲了將代碼和廣泛的重構從主幹中分離出來,以免中斷團隊其餘部分的工作流程。

一旦完成了大型任務,您只有一個分支文件夾合併回幹線(其他開發人員在其工作完成後不斷更新)。

應該使用源代碼管理系統來使開發工作流程更容易,而不是更復雜。

+0

謝謝,你是在確認我的疑惑。我和你一起。 – Uncoke 2012-07-05 09:56:05

0

我同意其他人說你的策略目前是瘋了! ;)

就我個人而言,我更願意將trunk作爲穩定的'live'版本,並將所有開發保留到一個分支,這樣所有開發人員在同一分支上工作,只需要在功能或者項目已準備就緒,並且您知道自從您分支後樹幹仍未更改。

儘管上述選項可以正常工作,但我擔心每次在主幹上發生某些變化時都必須更新分支,並且增加了衝突的可能性(如果幹線是實時代碼,則破壞了網站/產品)。

0

像其他答案一樣告訴你:這種方法簡直就是braindead。在你最終完成工作之前,你會浪費你的時間從不同的分支合併。

除此之外:如果你想爲每個開發者分配一些東西,爲什麼不使用像mercurialGit這樣的分佈式VCS?

如果您必須學習SVN(並且尚未被破壞),您也可以學習mercurialGit。有good reasons切換。

兩年前我放棄了Git的SVN,並沒有後悔一天。相反,我喜歡便宜的分支,合併工作,在他們進入主人之前重新提交提交等等。

每個人都在本地工作,當談到將事情合併到master(SVN中的trunk)時,開發人員合併,然後推送到中央回購站。您不必浪費任何關於哪個開發人員應該在哪個分支上工作的想法。

關於分支,有大約一個相當受歡迎的文章一個成功的Git分支模型這裏:http://nvie.com/posts/a-successful-git-branching-model/

或許你可以說服你的同事切換將是他們的工作真正受益。即使我們使用Git,我仍然堅持要手動合併。我們每週需要2到3個小時來同步我們的工作。只有兩個人的工作。如果你從更多的合併,這將需要很多的時間,可以更好地使用。