Git跟踪版本吗?

时间:2010-03-02 20:33:52

标签: git version tags keyword version-control

我是具有UNIX SCCS和Microsoft Visual SourceSafe经验的Git newbee。

在SCCS中,每个文件都有一个版本(I%),它由Release(%R),Level(L%),Branch(%B)和Sequence(S%)组成。 %I等于R%。%L.B%。%S,好吗?这些被称为ID关键字。

目的是在检查它们之前在源代码中插入这些ID关键字,然后当您将它们检出以进行只读(不更改)时,它会将它们转换为它们的版本号。例如:

printf(“Version s \ n”,“%I”);

......将成为,

printf(“Version%s \ n”,“1.4.6.2”);

将打印,

版本1.4.6.2

SCCS会逐个文件地跟踪版本,并在每次签入时将其递增。

Git中有什么接近的东西吗?

2 个答案:

答案 0 :(得分:5)

正如SO问题“To put the prefix ? to codes by Git/Svn”中所讨论的那样,Git没有RCS关键字扩展。

最接近的Git命令是 git describe ,以获得某种提交引用。

但混合 元数据 (即数据“版本ID”关于数据“文件”通常不是一个好主意)与数据(文件)。
如果您确实需要此类信息,则列出其他常规文件的单独特殊文件及其关联的版本ID更为实用。

即使ClearCase在每个文件的分支和序列方面具有与SCS类似的概念,也没有嵌入的版本号:请参阅Embedded Version Numbers - Good or Evil?

答案 1 :(得分:4)

您可以使用git-describe生成唯一标记名称。

  

该命令查找可从提交访问的最新标记。如果标记指向提交,则仅显示标记。否则,它将标记名称后缀为标记对象顶部的附加提交数和最近提交的缩写对象名称。

如何使用'git describe'(from here)确定软件版本号的示例:

01  git commit -m'Commit One.'
02  git tag -a -m'Tag One.' 1.2.3
03  git describe    # => 1.2.3
04  git commit -m'Commit Two.'
05  git describe    # => 1.2.3-1-gaac161d
06  git commit -m'Commit Three.'
07  git describe    # => 1.2.3-2-g462715d
08  git tag -a -m'Tag Two.' 2.0.0
09  git describe    # => 2.0.0