有没有办法确定颠覆中的最新标签?
对于我已部署的应用程序,客户端需要拥有另一台服务器,以防实时服务器出现故障,他们可以访问该服务器。已经有一个自动化系统可以将数据库复制到备份服务器。应用程序代码位于 subversion 存储库中,我想编写一个脚本,将代码从 subversion 自动复制到备份服务器。我有一个执行此操作的脚本,但是,我需要手动告诉它要检索什么标签。有没有办法让它完全自动化。
服务器正在运行 Redhat。
有没有办法确定颠覆中的最新标签?
对于我已部署的应用程序,客户端需要拥有另一台服务器,以防实时服务器出现故障,他们可以访问该服务器。已经有一个自动化系统可以将数据库复制到备份服务器。应用程序代码位于 subversion 存储库中,我想编写一个脚本,将代码从 subversion 自动复制到备份服务器。我有一个执行此操作的脚本,但是,我需要手动告诉它要检索什么标签。有没有办法让它完全自动化。
服务器正在运行 Redhat。
tags
此 shell 命令输出您目录中最近创建的标记。如果您从签出的存储库中调用该命令,则可以使用相对 svn 路径令牌
^
:我的理解是标签只是您使用“svn copy”命令创建的主分支的副本。那么,如果你这样做,你不是给这些标签版本号吗?只抢最高数?
也许您的意思是回购的最新修订号?在这种情况下,它会是这样的:
或者,也许你想要:
然后,您可以对每个目录执行 svn 信息,具有最高 Last changed Revision 编号的将是最新标签。
如果您的标签在排序时按顺序列出,您可以使用以下内容获取最新的名称:
如果您的项目的标签结构不是那么严格,
svn ls
则需要将结果传递给-v
(verbose) 选项并根据输出中的日期进行排序。如果您的标签没有“自然”排序(如果您遵循语义版本控制,则 1.10.0 将在
svn ls
输出中列在 1.1.0 之后而不是 1.9.0 之后),您可以使用标签的保证排序修订 ID目录:如果你有好的版本号
我喜欢 Jim Huang 的解决方案,效果很好。如果您收到错误“Broken Pipe”(我在 Ubuntu 和 Mac 上遇到),请尝试将命令括起来,如下所示:
这将简单地抑制错误消息。我检查了一些邮件列表,显然没有人知道为什么会发生这个错误。