【问题标题】:Subversion to Update the ver in a text fileSubversion 更新文本文件中的版本
【发布时间】:2015-07-31 15:30:59
【问题描述】:

我在这里陷入了一个圆形陷阱... 我们正在专用服务器上构建,因此当我们进行拉取和构建时,我想更新项目中的版本信息以显示版本,使得最后一位数字是当前拉取的“修订”号以进行颠覆。

但是如果脚本更新了那个文件,那么它就不是最新的。所以我需要重新提交该文件,或者在下一次拉取中合并它,或者......?然后修订号递增。

我在一个 C++ 程序中解决了这个问题,方法是将实际的修订号放在一个不受 SVN 控制的文件中。现在脚本可以“svn update”,捕获修订号,更改本地文件,并构建。但是,这会创建对不受 SVN 控制的文件的依赖。

此外,在某些项目中,我似乎无法将版本号外部化到专用文件中,并使该文件不受 SVN 控制。

我真正希望看到的是 SVN 会在 svn 提交(或 svn 更新)时更新的“引人注目的”标签。像这样随意的东西:{!SVN_REV} 因此,我的 C# 程序集文件可能如下所示:

[assembly: AssemblyFileVersion("1.1.0.{!SVN_REV}")]

其他版本控制系统支持这种能力。 Subversion 有没有办法做到这一点?

感谢您的任何建议。 斯科蒂

【问题讨论】:

标签: c# c++ svn version-control


【解决方案1】:

如果脚本更新了那个文件,那么它不是最新的

不,它是当前(信息条款),您不能将这个微小的更改保存在存储库中(最好和最简单的方法)

从另一边,你可以

  • 将模板文件存储在存储库中(了解 SubWCRev 及其关键字)
  • 在构建阶段,在第一阶段使用关键字创建额外的未版本化文件,替换为真实(实际数据)并使用 文件,而不是模板

【讨论】:

  • 好的,语义... repository 不是最新的,因此开发人员可以访问它。我拥有的脚本会进行更新,然后构建。那么它应该提交这个更改吗?如果我必须重新提交只是为了增加一个数字,那么它就会毫无意义地计数。因为如果我再次运行它,我将拥有一个与任何实际更改或修复无关的新修订号。这是我试图避免的。目前,我只是沿着一个非版本化文件的路径去替换版本化文件中的关键字。
  • " 那么它应该提交这个更改吗?" - 绝不。只需svn revert 文件中的此更改
猜你喜欢
  • 2011-08-19
  • 2010-09-19
  • 1970-01-01
  • 2013-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多