2009-04-14 102 views
7

我以爲我能參考其他開發者的東西就像一個列表:什麼是源代碼管理和配置管理最佳實踐?

  1. 一個構建腳本,如makefile文件, 將建立並測試整個項目
  2. 所有組件所需的構建 系統需要源控制

任何人都有這樣的列表?優先順序?


UPDATE - 增加了一些細節FYI

系統在問題包括C++和生成文件,爪哇與螞蟻導致戰爭,以及PowerBuilder和C#GUI組件。所有代碼都在執行。

所以我正在尋找通用以及語言特定的最佳實踐。

回答

7

對我來說,#1規則是這樣的:

主要分支是神聖的 - 它必須始終可建造,能夠通過BVT的,而且是基本可用。

任何允許進入導致構建或BVT中斷的主分支的代碼都會暴露流程中的錯誤。該流程應該允許夥伴構建/測試單個分支系統,或者要求子分支在構建主分支之前構建並通過BVT,或者其他此類保護。

+0

恩,如果我可以問,什麼是BVT? – bluezald 2012-07-24 03:37:33

1

這很大程度上取決於您建築的環境是什麼?

  • 它是C/MakeFile?
  • 它是Java/JUnit/Ant嗎?
  • 它是.NET/NUnit/NAnt嗎?
  • 它是.NET/MSUnit/MSBuild?
  • 它是紅寶石......
  • 它是Python的...
  • 它是PHP

每一種方法中和設置不同。所以我們需要知道你的設置,然後才能得到幫助。

+0

增加了詳細信息:有問題的系統由C++和makefiles組成,Java中帶有導致WAR的ant,以及powerbuilder和C#gui組件。所有代碼都在執行。 所以我正在尋找通用以及語言特定的最佳實踐。 – 2009-04-14 23:23:16

1

我的頭號項目:

  • 更新的時候,經常犯,

,或者傑夫所說的:Check In Early, Check In Often

+1

通過閱讀該博客條目的評論,你會發現我強烈反對這種觀點。版本控制系統旨在控制軟件版本,而不是備份中間編輯。一個好的編輯應該爲你做。 (Emacs中的版本控制) – 2009-04-14 22:09:17

0

如果您通過從「喬爾測試」這些問題,你應該在正確的道路上:

你使用源代碼控制?
您是否每日製作?
你有錯誤數據庫嗎?
在編寫新代碼之前是否修復了錯誤?

我的第一個問題是:您可以一步完成構建嗎?

The Joel Test

0

作爲一個SCM經理,我可以給你關於這個問題的最佳答案是「看情況」。您列表中項目重要性的列表和順序取決於您的項目要求,您使用的語言和開發人員級別。

您可能想要考慮的一件事對您放在一起的任何列表來說都很重要(或#1),即您的工具的主幹或主分支受到極大的控制,只有少數人可以訪問導入或對其進行更改。這將在發佈時節省大量頭痛。

的項目,可以是任何名單上,你放在一起是:

  • 何時入住(每日,每週,更多的時候,不常)
  • 當建造完成後(每日,每週,等)
  • 使用雙存儲庫(工程與生產)
  • 允許二進制文件庫
  • 允許在庫的第三方軟件
  • 個在庫中的所有必需的構建項目
  • 當進口或提交到主幹完成
  • 使用一個文件導出並建立
  • 允許簽入有/無缺陷報告信息
  • 強制簽入註釋標準

該列表可以繼續和開放取決於您的具體要求,但我認爲你得到的是這裏的一般想法。

1

系統必須自行構建,自行測試,並自行下載+構建依賴關係。 我有一個生成文件下載,建立和部署一個運行時環境,這是我的中繼版「認證」。這個makefile也被提交到版本庫中。

記住犯下另一個非常重要的,而且大多被忽視的東西(有三種一捆):(!把一個版本就可以了)

  • 創建數據庫佈局的SQL代碼。
  • ,帶來了你的數據庫佈局版本的SQL代碼(升級)
  • 帶來了你的數據庫佈局版本的SQL代碼(降級)
0

的「獲取最新」的全過程, 「建築」應該平穩,輕鬆,快速和可靠。

如果不是,開發人員往往會忽略獲取最新版本並繼續研究其陳舊的副本,這是您想要避免的。

這是多了還是少了什麼邁克爾所述 - 但我想強調的是超越分支是神聖和穩定 - 整個過程應該是快速和容易

有點像谷歌的理念是下載\安裝應迅速和容易