2010-03-02 80 views
5

我是一名具有UNIX SCCS和Microsoft Visual SourceSafe经验的Git newbee。 (%R),Level(L%),Branch(%B)和Sequence(S%)组成的版本(I%)。 %I等于R%。%L.B%。%S,好吗?这些被称为ID关键字。Git会跟踪版本吗?

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

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

...将成为,

的printf(“版本%s \ n”,“1.4.6.2”);

,它将打印,

版本1.4.6.2

SCCS保持在一个文件通过文件的基础版本的跟踪和每个他们在检查的时间增量它们。

有任何接近Git的东西?

回答

4

正如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?

+0

我同意,你不应该注射版本号到您的源代码,然后将其存储在版本控制。版本号应该在构建时确定 - 可能会替换源代码中的令牌或使用属性文件。 – 2010-03-02 20:54:10

3

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

该命令查找可从提交中访问的最新标记。如果标签指向提交,则只显示标签。否则,它会将标记名称与标记对象顶部的附加提交数量以及最近提交的缩写对象名称后缀相加。

如何确定与“git的描述”软件版本号例(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 
+0

我从来没有去标记原始提交。换句话说,我得到了别人的旧代码,更新了它与最新版本的编译器一起工作,然后发现了Git。我有两个提交:原始代码和我的更改。我想原文是主人吧?那么,我如何标记主人? (其实,他不是主人......他的代码真的很烂...... LOL。) – PalaDolphin 2010-03-02 23:48:22

+0

master是一个分支,所以除非你创建了一个新的分支,否则你的提交都会在其上。 – Zitrax 2010-03-03 07:49:33