我的问题是:我不想在文件“A”中显示文件“B”的最新版本号。
Subversion有一个名为“Keyword Substitution”的功能。在提交文件内容时,它使用实际值中的替换关键字。
但是有可能在文件中添加一个关键字,它将被与其他文件相关的值替换吗?如果没有,上面原始问题状态的解决方案是什么?
我想Jeff Atwood就是这么做的,就在StackOverflow网站上。如果我记得很清楚,他甚至在以前的播客中评论过它。
<script type="text/javascript" src="/content/js/master.js?v=3067"></script>
“v = 3067”似乎是“master.js”的最新版本号。杰夫,你能帮我个忙吗? :)
答案 0 :(得分:1)
我最近问了一些类似的问题 -
简短的回答是,对于SVN,你不能这样做。
您唯一真正的选择是实施构建时间解决方案来进行替换,例如:使用make或Ant(无论你使用什么)。
答案 1 :(得分:1)
嗯,这个数字可以是两件事之一:
在任何一种情况下,它都有一个特定的目的,以确保当用户获得一个带有CSS或javascript文件的网页时,如果版本号自上次更改后具有这样的版本号当用户访问同一页面时,Web浏览器将忽略该文件的本地缓存,并重新下载。
除非您想将该引用固定在较旧的工作版本上,否则我会说您可以使用HEAD版本号更新它。这将是“安全的”,因为它会给你你想要的东西,但可能会浪费带宽,因为它会强制重新下载一个可能已经或可能没有改变的文件。
如果您确实需要该链接的其他文件的修订号,那么我会说您应该使用小程序,自定义关键字系统和解析日志文件来推广自己的解决方案。
例如,你可以这样做:
rc="/content/js/master.js?v=#Rev(master.js)#"
并有一个正则表达式来寻找:
#Rev\((?<filename>[^)])\)#
然后你必须从Subversion读取日志文件,你可以用XML输出它。