Léo*_* 준영 11 svn git version-control
如何?v=VersionNumber使用Git/SVN有效地为您的存储库中的每个文件添加前缀?
我发现SO使用这种做法为其repo中的每个特定文件提供版本号.
他们使用SVN.我想知道你如何用Git做同样的事情.
几个例子.
<link rel="stylesheet" href="/content/all.css?v=3959">
Run Code Online (Sandbox Code Playgroud)
<script src="./js/question.js?v=3955" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
Von*_*onC 15
"在您的存储库"?在您的存储库直接?
这将被称为" 关键字扩展 ",不建议这样做(如本SO问题所述)
将元数据(修订号)放入存储在存储库中的数据可能会导致合并问题.
您在SO页面中看到的是部署过程的结果,该过程从SVN(修订版)获取元数据并将其放入生成的HTML页面中.
GitFaq也不推荐它.
相当于集成到服务器上部署的文件中的SVN修订版号将使用git describe,以便在部署步骤期间获得某种"提交计数".
但是直接在存储库中记录它将意味着关键字扩展和关键字un扩展.
为了说明这一点,让我们看一下Linus在关于这个主题的原始讨论时所说的话(2007年4月):
增加扩张不仅"更难".任何一种表现基本上都不可能.
想想"git checkout newbranch".
并想想我们对文件(和整个子目录!)做了什么,甚至没有改变.最后,考虑优化在SCM中的重要性,例如支持分支的git.关键字扩展所具有的基本问题(即,如果不使用"关键字"属性集来检查every_single_file,则基本上不可能进行切换.还有其他问题).
现在,unexpansion是容易做到(这真的是一样的"CRLF-> LF"翻译:这在技术上实际上只是一个"unexpansion"太).它应该工作.
这种做扩展的方式也打破了"git diff",因为它基本上总是让diff 忽略关键字.换句话说,当你这样做
git diff A..B
Run Code Online (Sandbox Code Playgroud)
并将差异发送给其他人,他们永远不会看到任何关键字!
现在,这显然符合我的要求,如果A和B相同,差异是空的,所以你应该期待我快乐.
但我不高兴,因为如果对方也使用git,他甚至不能应用DIFF!
即使他处于"A"状态,因而得到一个应该完全适用的差异,如果未扩展的关键字周围有其他变化(当然,他将扩展到他的工作树中,他会得到拒绝).看到?关键词根本无法奏效.他们坏了.您可以忽略它们(并且不会在差异中显示它们),在这种情况下,差异被破坏,或者您不能忽略它们(并在差异中显示它们),在这种情况下,差异也会被破坏,只是不同.
唯一理智和可行的案例是根本没有它们.任何关键字扩展总是导致的问题.你根本做不到.
如果这个版本号是由某些服务器脚本生成的:PHP,Perl,ASP.NET,Ruby on Rails(VonC 解释了为什么关键字扩展是一个坏主意,即为什么制作Git而不是Web服务器更新这样的信息是一个坏主意),那么在这个脚本中运行git describe就好了.
另一个解决方案是制作部署(构建)系统,该系统将文件从版本控制系统复制到Web服务器,嵌入此数据.例如gitweb,用Perl编写的Git的git web接口
our $version = "++GIT_VERSION++";
Run Code Online (Sandbox Code Playgroud)
由build system(make gitweb/gitweb.cgi)替换为运行结果GIT-VERSION-GEN.这意味着例如运行gitweb显示在"generator"元标题中,例如:
<meta name="generator" content="gitweb/1.6.4.rc0.22.gfc1cf.dirty git/1.6.3.2.317.g2dd3f"/>
Run Code Online (Sandbox Code Playgroud)
小智 2
也许您正在寻找这个:
至少可以设置 $Id$ 并且使用过滤器将允许您有更多选择。
这个答案的示例(不是最好的)
echo '*.txt ident' >> .gitattributes
echo '$Id$' > test.txt
git commit -a -m "test"
rm test.txt
git checkout -- test.txt
cat test.txt
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5146 次 |
| 最近记录: |