2013-04-18 32 views
1

我正在将我的VCS从Subversion迁移到Git。当我使用Subversion时,我曾经使用Subversion版本号作为我的程序集版本的最后一个组件。在TeamCity中,我使用%build.vcs.number%作为内部版本号格式的一部分,我使用'AssemblyInfo Patcher'(有时是MSBuild社区任务)在编译之前使用版本号更新我的AssemblyVersion属性。这一切都工作得很好,并且很容易将任何给定的程序集追溯到确切的源版本。是否可以从Git获取简单的数字修订号?

不幸的是,在Git中,不再有版本号。相反,我们拥有无法在AssemblyVersion中使用的长十六进制哈希码。到目前为止,这是一件让我感叹要改用Git的东西。

有没有办法从Git中检索一个简单的数字版本标识符,我可以在我的构建配置中使用,如上所述?

+1

可能数重复的http://stackoverflow.com/questions/4120001/what-is-the-git-e quivalent-for-revision-number和http://stackoverflow.com/questions/677436/how-to-get-the-git-commit-count –

+0

感谢您的重复链接 - 他们没有出现在我的搜索。 –

回答

1

git describe 是我发现的最接近版本号的版本。它给你最后的标签的

  • 因为该标签的提交数量
  • 提交SHA
$ git clone git://github.com/antirez/redis 

$ cd redis 

$ git describe 
with-deprecated-diskstore-2853-g5a526c2 

,或者如果你只是想

$ git describe | awk '$0=$--NF' FS=- 
2853 
+0

我得出的结论是,这对Git来说并不可行,所以我放弃了使用Major.Minor.Build.Revision格式。我可能会使用SemVer,第四个位置是自动递增内部版本号。我打算将Git修订版放入程序集中的一个属性中,可能是[AssemblyConfiguration]属性,但在我这样做之前,我正在等待TeamCity 8。 –