2012-03-29 56 views
1

我對SCM非常陌生,我意識到有一些指導和recomendations可以遵循,但我不知道他們中的任何一個。有幾件事讓我對SCM感到困惑。例如:Mercurial最佳實踐

  1. 我知道,這是一個最好的做法是儘快和儘可能經常犯的,但我該怎麼辦,如果我工作的一個變化/功能,需要數天甚至數週?我可以分解任務,但mercurial說,人們不應該爲未來的變化而改變想法。每一次提交的變化都應該處於最後階段。
  2. 在什麼情況下分支有用?除了在SCM中拆分不同的版本。
  3. 爲什麼和什麼時候應該克隆存儲庫?

對不起,對於那些愚蠢的問題和我破碎的英語,我在網上閱讀了很多關於SCM的文章,但是他們每個人都包含彼此衝突的信息。

感謝

+0

你也可以在項目郵件列表上提問:[email protected]在那裏我們可以討論一下它們。堆棧溢出對於「我該如何做X?」形式的問題更好,而不是「何時或爲什麼我應該執行X?」。 – 2012-03-29 12:07:31

回答

2
  1. 當一些邏輯已完成或需要執行的分支的 行動提交。當您通過單元測試確認代碼是好的 時推送。承諾是本地的,推動是公開的。
  2. 分支機構當您即將啓動需要 幾天甚至幾周的事情時:-)
  3. 當您需要克隆時,其周圍沒有最佳實踐規則。

心態不是經常提交,而是經常合併。如果你在分支機構,經常與主線合併。較小的塊更容易消化,並且可以瞭解正在開發的內容(相應地調整您的代碼)。

+0

非常感謝您的回覆。還有一件事我沒有得到。你說我應該在一個功能需要幾個星期的工作時創建一個分支。爲什麼我應該使用分支而不是主存儲庫?我應該如何處理分支,我可以向分支提交未完成的更改,當分支完成後,我將與主存儲庫合併並僅推送已完成的更改集(從主存儲庫中)?這是你的意思?如果是這樣,新創建的分支也將被推送?再次感謝:-) – Davita 2012-03-29 10:28:55

+0

我工作的方式是創建一個與main相鄰的分支來完成一些相關的工作,這意味着我可以讓主分支與其餘的開發保持同步,並隨時將其合併到我命名的分支中,只要我喜歡。當我完成後,我會做一個從main到named的最終合併,然後是一個從named到main的no-op合併(no-op,因爲我已經以另一種方式完成了合併)。當你推動的時候,你可以把所有的東西或者只是把你合併的一個變更集從命名變成主要變量。 – 2012-03-29 10:31:12

+0

對於愚蠢的問題感到抱歉,但無操作合併意味着什麼。正如你已經猜到的那樣,我在這個領域是全新的。(關於分支,如果我理解正確,當我需要做一些繁重的工作時,我創建一個分支來處理一些骯髒的工作,當我有一些進展我可以將最新的變更集合到主分支當我完成這個「繁重的工作」時,我將主要的回購合併到一個名稱中(所以後面我將避免合併衝突),然後合併最新的變更集命名分支到主要分支。關於推動,什麼是最好的,只推動最後的變更集或 – Davita 2012-03-29 10:45:00