题
在我的网络应用程序,我有一个文件,该文件保持目前的修订数通过转$.这项工作除了,如果我不做任何修改的该文件,它没有得到承诺。
有,反正我可以迫使一个单一的文件总是得到致力于SVN服务器?
我使用的是如今Windows因此,任何代码或一步一步说明将是有益的。
解决方案
如果你有如今安装了,你也有-M工具。使用该工具得到修订,而不是滥用美元转$关键词。
创建一个模板文件,该文件包含定义,也许喜欢的东西
const长WC_REV=$WCREV$;
在一个文件命名的版本。h。tmpl
在每一个建立,呼叫-M要建立"真实"的文件可以用在你的应用程序:
-M path o\workingcopy path o\版本。h。tmpl path o\版本。h
这将创建文件的版本。h从版本。h。tmpl,文$WCREV$替换成修订工作复制目前在。
的 文档-M 可能会有帮助。
其他提示
基本上,你想输出 svnversion
命令在一个文件。
这种文件通常是保持了存储库,并自动通过创建一个建立脚本。我建议你也这样做。如果你不建立,但只是为一个 svn up
在服务器上面,只是呼叫 svnversion
后 svn up
或者创建一个脚本要做两者的行动。
如果你 已 以保持它在储存库中的另一方面,呼吁 svnversion
在预先承诺挂钩将会是你最好的选择。
我想你可能不理解如何将美元转$标志的工作。我们的目标的转标志不具有这项修订始终致力于成的颠复存储库。我们的目标是,在更新,转旗将永远是什么样的修订。 你应该不需要把代码成为颠复中包含的修订。 颠复是很擅长跟踪信息用于你。
什么你可能会错过的是,你需要设置一个属性的文件,以便修订的关键词将正确地处理。
svn propset svn:keywords "Revision" file.txt
这将确保只要你做一个更新,美元转:xxx$标志将更新目前的修订。你不需要担心如何致力于储存库。
@gatekiller:它似乎如今不会支持 客户端挂钩.
这项工作除了,如果我不做任何修改的该文件,它没有得到承诺。
如果文件不会改变,为什么你会需要它commmit每一个时间?
[编辑] @肖恩=我了解他想要做,但是如果文件是从未得到更新,通过一个钩或一些其他进程,并因此永远改变然后SVN将永远不会把它捡起来。
我建议改变方法、提交文件的每一次装置隐式保持全球的修订数量,在该文件。有用户可能需要另一个关键字 GlobalKey, 其inexistance解释 在这里, 我实际上没有提到的使用 svnversion 然而,它可以带你到一个解决方案。
可能的修订数文件被更改的一个脚本,部署了你的网站从SVN的网络服务器?
不知道有关上窗,但使用bash-脚本,我会做这样的事情..
$ version=$(svnversion)
$ svn export . /tmp/staging/
Export complete.
$ echo "Revision: ${version}" > /tmp/staging/version.txt
然后 /tmp/staging/version.txt
将含有"修订:1"(或任何最高的修订号)。
当然,你可以替代某些标识符,在一个文件,就像 $Rev$
(而不是创建 version.txt
按上面的例子)
根据你的客户,他们中的一些提供一种预先承诺挂钩,可以实现的东西,简单地"接触"的文件和标记作为改变。如果您使用的东西喜欢Visual Studio您可以创建一个后建立的任务,将"接触"的文件,但你就必须确保你做一个建立在提交之前的变化。
@gradonmantank:因为他希望该文件将更新的最新版本的编号。你有没有读过他的问题?
预先提交的挂钩可能会工作。
我以前有个手动的方式这样做。我运行了一个脚本,将使用sed替换意见,与当前的时间戳我的$转$文件。这样一来,文件内容将改变以及颠复将提交。
什么我没有做到的是要采取以下步骤:使用 颠复的储存库钩 自动化过程。麻烦的是,我不知道,如果你允许更改文件内容挂钩。该文件似乎表明,你不能。
相反,我猜你会需要一点小小的脚本,你愿意执行在地方 svn commit
命令,该命令第一次更新的时间戳然后运行正常的提交。
作出承诺的文件不会做你有任何好处。该文件是不是承诺的完整版本内,替换为仅仅是关键词。如果你看一下文件内部的储存库,你会看到这一点。
因此,需要力的文件被更新,以某种方式代替。
如果你在窗平台,可以使用的-M工具,分布如今.文档 在这里,.
你可以使用svn预先提交挂钩,做到这一点。
总的想法我想是创建一个在提交之前将把新的修订号文件中(获得使用树的结构)或者,也许改变一个虚假的财产的文件(它有可能改变或SVN会忽略它)。
更多信息,有关预先提交的钩子我找到了 这页 有用的。
我认为最好的方法来确保有一个文件在你的网页应用程序,有SVN修订数是没有一个文件提交,而是以提取它的一部分建立的剧本。
如果您使用的家,你可以做到这一点,与家-内部版本号-插件。