2011-12-01 69 views
0

我目前對我的項目使用SVN(雖然我會很快嘗試git),但我知道大部分基礎知識(提交,更新,分支,合併等),儘管我覺得我仍然對如何正確使用它有點無知。順便說一下,我的項目目前只涉及到我自己。下面是一個示例場景:我們有SVN服務器,實時Web服務器,開發/測試Web服務器和我的工作站。我創建了一個涉及多個新文件的新功能,並在「開發新功能X」時提交它,一旦在開發服務器上籤出,我會經歷看到錯誤,修復錯誤,提交,檢出,重複直到所有的錯誤都消失了。其中一些錯誤修復可能是簡單的錯別字。版本控制約定和最佳實踐

所以我有些困惑,因爲主要功能提交似乎與微小的打字錯誤(如果有意義的話)「保持一致」,當我看到一個版本列表時,我可能只是想看到主要而不是輕微的修正。另外,「有意義的提交信息」可能需要10倍的時間來輸出,然後實際的錯誤修復,所以更多的時候,我不會留下空白或鍵入「呃」。這看起來不太合適。那麼我錯過了什麼?還是我只是懶惰?

回答

2

在所有的版本控制系統中,提交/修訂都是相同的,並且根據更改的大小沒有重要性。這是分支和標記進入圖片的地方。自上一個標記/在分支上標記一個「功能完整」提交集,並在測試/ Web服務器上進行處理。 (另外,我可以建議自動化測試和持續集成。)

有意義的提交消息是版本控制的組成部分。無論您的更改有多小,請嘗試使消息有意義。我有許多開發團隊,提交信息固定爲固定格式,並且有一些必要的信息,如bug跟蹤器編號等。即使對於只有一個人的小型項目,現在,提供正確的消息總是很好。在Git中,如果需要,您可以在稍後階段輕鬆編輯提交消息,然後推送到中央倉庫。這樣,您可以在提交時提供更小的消息(請注意,我並不是說小消息不需要有意義),然後花一些時間來「微調」您的歷史。

2

關於最佳實踐的出色書籍是Practical Perforce。它是一本關於專有版本控制系統Perforce的書,但本書繼續解釋使用Perforce的最佳方法,這種方法最終成爲使用幾乎任何版本控制系統的最佳方式。

我已經從本書中學到了很多最佳實踐,我已經將其應用於其他版本控制系統,並且我已經推薦給其他人 - 即使他們從未計劃使用Perforce - 也只是因爲它有一些優秀的最佳實踐想法。這些措施包括:

  • (因爲什麼在開發將在UAT最終結束了,即一個特殊的UAT分支)不要使用基於分支環境。
  • 需要時分支,而不是之前分支。這主要意味着,當發佈版本爲代碼完成時,您將分支發佈,並且未發佈的新內容將放入代碼中。
  • 釋放樹枝而不是樹幹。這將允許您在下一個版本中繼續進行修補程序。
  • 不要嘗試挑選修補程序。它從來沒有按預期工作。總會有一個代碼更改取決於另一個代碼更改,這個代碼更改取決於您不想發佈的另一個代碼更改。
  • 使用一個持續集成系統,可以進行自動化測試和建立每個變化。

我知道這似乎很奇怪閱讀一本關於一個版本控制系統,當你想使用另一種,但大多數版本控制的書是關於使用該軟件的堅果和軟件的螺栓,而不是最好的做法。這是涵蓋兩者的少數幾本書之一,其中大部分可以應用於其他版本控制系統。

+0

是否「需要時分支,而不是之前」適用於git?常見的看法是,git處理分支和合並非常好,而且分支早,通常是好的做法。 –

+0

@凱斯湯普森 - 這不是一個好的工作如何。無論軟件有多棒,分支和合並都是痛苦的。最大的問題是跟蹤你的分支,問題以及合併和解決衝突。如果您使用連續構建系統,則每個分支需要構建。因此,分支越少,管理項目就越容易。這並不意味着不支持branch_,這意味着不要創建管理員喜歡製作成PowerPoint幻燈片的精心設計的分支層次結構。 –

+0

CVS手冊在開始時包含了有關版本控制的最佳常用技巧之一,imho:「[版本控制系統]不是通信的替代品」 – araqnid