2010-02-03 57 views
4

我總是忘記更改bugfix版本的版本號,當我發佈1.0.9時,也許源代碼中的版本號仍然是1.0.0你如何避免忘記增加項目的版本號?

到目前爲止,它並不是一個大問題,因爲每個版本都被記錄在SVN中,我可以隨時從我的SVN檢索指定的版本。

但我知道它不好,在可預見的情況下,升級舊版本時可能會導致問題。我在我的源代碼中存儲版本號作爲參數,我想如果有更好的方法來控制這個數字,尤其是對於PHP Web項目(我知道一些其他語言有自動生成版本,但似乎沒有在PHP?)。

你如何在你的項目中解決這個問題?任何最佳實踐?

回答

7

使用持續集成軟件,如TeamCity,並使用構建腳本接受版本號作爲參數。你的構建腳本可能只是調用一個小工具:打開一個文件(versioninfo.php),搜索這個字符串(一些正則表達式的東西),並用給定的參數替換它。


爲使這個更容易一些額外提示:分公司發佈每一個版本是很快,我們對生產5.0現在(但它仍然內置了hotfixing的目的),5.1支並在此處進行測試,並且主幹包含5.2。

每次您需要發佈修補程序,更新TeamCity中的版本號以及調用構建腳本(這也應該在TeamCity中完成)。

F.e.我們有以下的項目在這一點上:

  • 5.1版(這需要/v=5.1)
  • 幹線(這需要

    • 版本5.0.5(這需要/v=5.0.5)/ 「DPL_Updates_for_5.1.sql」):v = 5.2)

    與版本號,以及自動數據庫生成腳本,創建每個版本(就像一個大交易腳本前綴您的SQL腳本結合這一點。

    當我們將一個版本帶入生產環境時,我們從TeamCity的分支中獲取工件,將特定於該版本的數據庫腳本自動添加到zip文件中,然後我們將文件(加上版本筆記等)到我們的應用程序管理部門。

  • 0

    做一個清單。每次發佈時都要關注它。

    0

    我沒有使用svn和php很多。但是我看到有些人直接將svn版本整合到php文件中,使用文檔如/ ** @version $ SVN */ 因此,當我們從主幹中檢查我們的分支以創建發佈版本。 這些文件包含/顯示當前版本。

    1

    您可以使用像Code::Block's AutoVersioning plugin這樣的插件自動增加內部版本號(和/或版本號)。或者(如果你有太多的時間),你可以創建一個SVN腳本來限制使用相同版本號^^的提交。

    1

    有一個描述版本的本地數據庫。然後編寫一個腳本來構建發行版,這可以驗證存儲在您的源中的版本號,並在發行成功後更新數據庫。你甚至可以獲得Joel測試點!

    0

    使用phing來構建您的發佈包。它具有非常靈活的轉換功能,甚至可以自動讀取SVN的最新版本。