2016-10-25 62 views
3

我正在寫一個PHP Symfony Console應用程序,它takes a version number in the constructor如何自動提取版本號?

$app = new Application('myapp', '1.0'); 

我已經發現,在製作新的git標籤發佈時,很容易忘記碰撞版本號。我怎樣才能動態/自動地做到這一點?

除了這裏的話,我searched packagist很深刻,因爲我覺得肯定,這是常見的事,但沒有能夠把任何東西。

我開始還以爲寫一個函數,會做這樣的事情:

chdir(__DIR__); 
shell_exec('git describe --abbrev=0 --tags'); 

但因爲我globally require this CLI app with composer,它沒有與源代碼git倉庫。

我的下一個想法是,我知道我至少可以從作曲家

composer global show myname/mypackage 

得到它但這吐出一噸的信息,而且也沒有選擇,我所知道的,只是顯示的版本號。我覺得像使用正則表達式來過濾所有這些可能會矯枉過正。有沒有更好的方法?

+0

目的是什麼?要檢測應用程序正在運行的當前工作目錄中存儲庫的最新版本(通過標記)? –

+0

是的,那很好,但正如我在我的問題中提到的那樣,通過作曲者安裝時沒有git存儲庫。 –

+0

目標是當我標記一個新版本時,我不想記得先用版本號更新那個硬編碼的字符串。 –

回答

3

從什麼地方拉版本號可能是困難的,因爲你可以運行該應用程序的舊版本,但錯誤地拉最新的版本號。

你可以添加一個「release.version」文件到您的回購只包含版本號和閱讀將它傳遞給構造函數。

然後你可以使用一個git鉤狀預提交你提交一個標籤之前更新此文件。

然而,這是不是在分佈式系統推薦,因爲它可能會導致collisons,但對於小團隊或團隊提供了專門的發行經理也可能是好的。 在這裏閱讀:https://wincent.com/blog/automatic-deployment-numbering-in-gitHow do I enable ident string for Git repos?

這將可能是足有一個pre-commit鉤子,用來檢查一個新的標籤,只是提醒你在代碼中增加版本)。