抱歉,stackoverflow 不允许自己回复或编辑我的帖子或您的答案,因为我在问这个问题时没有注册。所以这里有回应...
西蒙:谢谢。为什么你建议修订属性不需要提交?nant 构建脚本当前使用修订属性来跟踪分支版本以进行合并和重新集成(svn 的内置合并功能太容易混淆)。但是这些修订属性需要提交到中央存储库,并且您的链接指的是用于此的相同类型的修订属性。您是指其他类型的修订属性吗?
关键技能:是的,提交“自动构建更新到版本 0.5.6.1049”的消息是可自定义的。该提交实际上发生在 nant 构建脚本中,该脚本由 CI 使用 Hudson 执行。而且,请记住,我们希望消除该提交,因为每次对 Pub 的提交都会跟随一个(或多个)污染日志的自动消息。
标记:重新:提交指向 Priv 的指针。提交 pub 的用户对 Priv 的访问权限为零,因此他们不知道是什么版本——否则是个好主意。另一方面,自动构建现在在构建 pub 和 priv 时执行此操作,但是这会污染日志文件,大量自动提交只是为了将版本链接到 Priv 没有任何其他实质性更改。
Mark:我们考虑将通信存储在存储库之外,但这会导致另一个我们无法解决的问题。解决这个问题,你就赢得了答案。问题是 pub 存储库包含依赖于从 Priv 构建的具有完全对应版本的二进制文件的软件。因此它包含一个“自动更新”功能,该功能连接到持有 Priv 的服务器,并要求提供二进制文件列表并下载它们。关键是开始这个下载的主要参数是版本。
马克:所以问题是 Pub 怎么知道要下载哪个版本?现在,原始问题中的情况解决了这一问题。自动构建 nant 脚本对 Pub 中的源代码进行了更改,以包含 Priv 的版本号,但这就是用“自动构建更新版本..”污染 Pub 日志的原因。如果 priv 从 Web 服务器请求 Priv 二进制文件,则自动更新工具使用该版本。这一切都有效。
马克:起初,次要问题似乎可以通过切换关系来解决,让 Pub 软件使用它的版本自动更新 - Pub 的版本 - 并且 Web 服务器使用单独的文件匹配它以获取最新的Priv 二进制文件的匹配版本。然而,看起来,似乎没有实用的方法让 Pub 软件从每次提交中知道版本。
马克:如果你把 $Rev$ 关键字放在自动更新代码中,它只会在文件被修改时才会更新。在使用 Subversion 时,这似乎是一个“古老的”挑战。似乎预提交挂钩可以使用版本更新源代码,但似乎只有有人提交有问题的自动更新源文件才有效。
马克:你的最后一个想法有点令人困惑,但听起来就像刚才提到的在提交到 Pub 时包含版本信息而不是额外的自动提交。我喜欢这样,但无法弄清楚(在谷歌搜索和阅读论坛和帖子超过一天之后)。如何提交项目范围的版本以及对 Subversion 的任何普通提交似乎是一个常见的挑战,因为它只单独版本文件。即使您在预提交挂钩中使用 svnversion ,它也只会更新已修改的文件,对吗?那么自动构建源代码是如何知道运行时是什么版本的呢?
大家:感谢大家的提问和回复。它有助于缩小对问题的理解范围,以便我们找到解决方案!太酷了!