简介:在产品中嵌入版本信息的推荐方法是使用构建系统 ; 请参阅下面的详细信息和替代方法。在Git中(我认为通常也在其他具有原子提交的VCS系统中)没有像单个文件的版本那样的东西。Git确实支持$Id:$关键字的按需扩展,但是:仅在要求时完成。您必须指定(可能使用globbing模式)文件(或一组文件)具有ident 属性集(在树中的'.gitattributes'文件中,或在'.git / info / attributes'中用于本地存储库设置)。它扩展到文件内容的SHA-1(或更准确地说$Id:<sha-1 of blob>$)。这种选择的原因是Git不会触摸在分支切换或倒带期间没有改变的文件; 如果'$ Id:$'扩展到修订信息,则需要更新每个版本控制的文件,例如在切换分支时。Git支持相当多的$Format:...$占位符,这些占位符扩展为提交信息(例如,$Format:%H$由提交哈希替换)但是:只有在输出文件中运行git archive时才会进行扩展。它是根据请求完成的,通过export-subst属性控制。嵌入版本信息的推荐方法是通过构建系统(在构建阶段)进行; 例如,参见Git web文件界面中Makefile使用的Git Makefile和GIT-VERSION-GEN脚本,用于git.git存储库。但是,您可以(ab)使用干净/涂抹过滤器驱动程序(via filter属性)来获得类似CVS的关键字扩展,在结帐时扩展关键字,并在将内容输入存储库时清除它们。