在我的网络应用程序,我有一个文件,该文件保持目前的修订数通过转$.这项工作除了,如果我不做任何修改的该文件,它没有得到承诺。

有,反正我可以迫使一个单一的文件总是得到致力于SVN服务器?

我使用的是如今Windows因此,任何代码或一步一步说明将是有益的。

有帮助吗?

解决方案

如果你有如今安装了,你也有-M工具。使用该工具得到修订,而不是滥用美元转$关键词。

  1. 创建一个模板文件,该文件包含定义,也许喜欢的东西

    const长WC_REV=$WCREV$;

    在一个文件命名的版本。h。tmpl

  2. 在每一个建立,呼叫-M要建立"真实"的文件可以用在你的应用程序:

    -M path o\workingcopy path o\版本。h。tmpl path o\版本。h

这将创建文件的版本。h从版本。h。tmpl,文$WCREV$替换成修订工作复制目前在。

文档-M 可能会有帮助。

其他提示

基本上,你想输出 svnversion 命令在一个文件。

这种文件通常是保持了存储库,并自动通过创建一个建立脚本。我建议你也这样做。如果你不建立,但只是为一个 svn up 在服务器上面,只是呼叫 svnversionsvn 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修订数是没有一个文件提交,而是以提取它的一部分建立的剧本。

如果您使用的家,你可以做到这一点,与家-内部版本号-插件。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top