版本的故事(二)版本的誕生
研發(fā)人員不斷修改代碼,在代碼庫上形成一個 Commit 鏈條,每一個 Commit 記錄了所有文件在某一時刻的狀態(tài),這個狀態(tài)稱為一個“快照”。在所有提交中,我們認為其中一些提交具有特殊的意義,比如我們完成了里程碑任務,這時可以發(fā)布版本了。對于這些特殊的提交,我們創(chuàng)建一個標簽(Tag)與之關聯(lián)。這個標簽,我們稱之為“基線”。創(chuàng)建標簽的工作,我們稱之為“基線化”。

代碼基線標志著版本的誕生,代碼基線就是這個版本的“出生證”。發(fā)布版本的時候必須創(chuàng)建 Tag,我們用 Tag 名稱作為版本號,編譯構建的時候把版本號烙印在發(fā)布包的某個地方(最容易辨認的地方就是文件名)。以后無論這個二進制包走到哪里,無論經(jīng)過多少年,我們都可以根據(jù)它的名稱知道它的版本號,根據(jù)版本號找到這張出生證,知道這個版本的來歷,查閱它的身世家譜。版本一旦發(fā)布,這個出生證就是不能變更的,既不能修改,也不能刪除。否則版本就會成為一個沒有身份、來歷不明的可疑分子。
我們必須在出生證上寫些什么,創(chuàng)建 Tag 的時候可以加一句注釋:
# 切換到主分支,我們一般在主分支發(fā)布版本
$ git checkout master
# 創(chuàng)建標簽,記錄標簽信息 $ git tag -a 1.0.0 -m "完成云主機維護功能發(fā)布測試版"
使用 Github、GitLab 這樣的代碼管理平臺,我們可以在頁面上記錄更多的信息。以下是在 GitLab 平臺創(chuàng)建 Tag 的界面,可以為這個 Tag 編寫一個完整的說明,記敘發(fā)布目的、完成功能、修復缺陷、遺留問題,還可以使用 Markdown 語法:

這樣一來,這張”出生證“的信息就更加完整了。
現(xiàn)在這個版本有了“出生證”,隨著工作的推進,它還需要有另一些證:
- 如果它通過了測試證明是一個合格的版本,要發(fā)一個“合格證”;
- 它和它的朋友們組成一個集體,通過集成測試,成為一個“產(chǎn)品”,要發(fā)一個“畢業(yè)證”;
- 運維把它拿到環(huán)境上部署,要發(fā)一個“上崗證”。
后面會寫一系列的文章說明這些“證”的作用和內容。但是在這之前,我們先要說一說“版本號”是個什么概念,怎樣給版本起一個既好聽、又有意義的名字。
浙公網(wǎng)安備 33010602011771號