2011-08-03 98 views
22

我使用Github上添加一個版本號,並且意識到他們訪問像提交,誰做的回購信息,一個可愛的小API等是否可以使用Git/github上

這將是一個在外部網站上顯示以前版本的項目的好方法,但我想知道是否有一種已知的方法來向主提交添加版本號?

所以版本號會自動增加與每個主提交或我可以手動設置它。

我知道我可以將它添加到筆記中,但我不熟悉是否有辦法將它分開。

+0

將它添加到提交如何?如果只是爲了顯示目的,你可以計算主人祖先的提交數(從shell,'git rev-list HEAD | wc -l'或類似的東西),然後把這個數字放在你的任何部分的旁邊顯示。 – jwodder

+0

夠公平的。我想過這個。但是在想,可能有一段時間我會想要以某種方式碰撞該版本。關於我在想什麼...... Github有一個問題跟蹤器,當我提交時,我可以添加像「Closes#1」這樣的文本,github將尋求並關閉相應的問題。我不知道是否有一些祕密的方法來執行「版本0.01」,並讓它找出並向主提交添加一個版本號,以後可以從api中重新獲取版本號。 –

回答

12

您可以使用標籤來設置版本號。你可以閱讀關於標籤命令on the git tag man page。在工作中,我設置我們的構建服務器以自動增加構建版本號,然後使用標記應用該版本號。我認爲這會滿足你的需求?

+10

您還應該考慮爲您的版本號使用明確定義的模式。 [語義版本控制](http://semver.org/)是一個不錯的選擇。 – Tekkub

1

大多數人使用git-tag爲此。

退房Vagrant ...向下滾動標籤,你會看到所有的版本。

14

有兩種標籤要考慮,一個內部版本號和一個版本號。產品發貨時,版本號可作爲標籤。此標籤具有歷史意義,可識別重要事件(例如運送產品)。

構建編號對於識別您相對於某個起點的構建很有用。 git-tag和git-describe的結合提供了一個很好的方式來生成可以嵌入到構建中的內部版本號。 git-describe可以定位一個具有glob模式的特定以前的標籤。 GIT中的結果描述了將被格式化爲:

tagname-[0-9]+-g[0-9a-f]+ 

當第一圖案是從所述標籤和所述第二圖案提交的數目是當前的哈希提交。這可以很好地格式化爲內部版本號。包含散列(至少前7個字符)可以很容易地識別與構建相關的特定提交。

例如,git describe可能會返回release-2.2-42-gd788e0e。這可以格式化爲release-2.2 build 42 (d788e0e)

+0

42不是內部版本號,它只是自上次找到的標籤以來發生的更改次數。 –

3

如前所述,檢查git-tag命令,您可以將它與一個鉤子結合起來,以便在做某件事時自動更新,例如推出主件。

退房http://git-scm.com/book/en/Customizing-Git-Git-Hooks

+0

鏈接404'ed。 –

+1

git書第7-3章的新鏈接:http://git-scm.com/book/en/Customizing-Git-Git-Hooks – Simon

+0

謝謝,我會編輯。 :) –

3

我使用這個:

function git_func { 
    GITBIN=/usr/bin/git 
    if [[ $1 == "commit" ]] && [[ "$#" -ne 1 ]] 
    then 
     GIT_VERSION=`$GITBIN rev-list HEAD | wc -l` 
     let GIT_VERSION+=1 
     perl -e "s/(\d+\.\d+\.)\d+/\${1}$GIT_VERSION/;" -pi.save config.json 
     rm config.json.save 
    fi 

    GITCMD="$GITBIN " 
    for var in "[email protected]" 
    do 
     GITCMD="$GITCMD \"$var\"" 
    done 
    eval $GITCMD 
} 


alias git='git_func' 

config.json包含此:

"version": "0.1.44"