簡體   English   中英

從git倉庫獲取版本號

[英]deriving version numbers from a git repository

我們有一個構建系統,該構建系統使用svn ID作為需要五位數數字的VM Builder設備的輸入。 當我從git編譯時,我一直在通過計算git repo中的提交次數來偽造它。 這僅是一種工作:-/我想弄清楚:

  • 我怎樣才能從git repo中獲得一個唯一的5位數字。

您正在尋找git describe

該命令查找可從提交訪問的最新標記。 如果標簽指向提交,則僅顯示標簽。 否則,它將在標記名稱后加上標記對象后附加的提交次數以及最近提交的縮寫對象名稱后綴。

$ git describe master
v1.10-5-g4efc7e1

您要像之前所說的那樣使用git describe ,這是我的rake任務,該任務自動打印出符合semver的遞增版本號

task :version do
  git_describe = `git describe --dirty --tags --match 'v*'`

  version, since, sha, dirty = git_describe.strip.split("-")
  major, minor, patch = version.split(".")

  version = "#{major}.#{minor}.#{patch}"

  if sha
    patch = String(Integer(patch) + 1)
    version = "#{version}pre#{since}-#{sha[1..sha.length]}"
  end

  if [since, dirty].include?("dirty")
     version = "#{version}-dirty"
  end

  puts version

end

像這樣使用:

$> rake version

v0.9.8pre32-fcb661d

在git中,每次提交都會生成一個唯一的SHA1哈希ID。 您可以在運行git log時看到每個提交的ID。 如果您希望最近一次提交使用5位數字,則可以執行git log --pretty=oneline --abbrev-commit --abbrev=5 -1 對於我的倉庫之一,輸出看起來像這樣:

$ git log --pretty=oneline --abbrev-commit --abbrev=5 -1    
3b405... fixed css for page title.

您可以嘗試使用其他選項來生成git log以自定義格式。 當然,如果存儲庫具有足夠的提交,則總有可能5位數字不足以保證唯一性,但是對於足夠小的項目,它可能會做到。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM