"标记" SVN 导出特定版本的修订版。

5
我正在寻找以下情况的解决方案。
我们使用Subversion,除了开发环境,我们使用检出之外,我们还有一个测试环境,应尽可能地与生产环境相似。
因此,我们现在设置了这样一个环境,即通过使用SVN导出来更新它。但是,由于我们只想要最新版本,我们不知道已经导出了哪个版本。
是否有一种方法可以“标记”此导出,例如添加一些生成的文件,指示导出了哪个版本?(我们不想导出标签,因为我们将在一个发布周期内进行多次更新。)
3个回答

3
您可以做的一件事是确保从已知的版本进行导出,并将该版本号写入导出的文本文件中。命令svnversion将告诉您工作目录的版本号。因此,请执行svn update以获取最新版本,然后将其导出到部署位置,最后将svnversion的输出重定向到与导出相同的位置的文本文件中。即使有人自那时起提交了新代码,修订号也将是更新时的修订号。当然,您肯定会想要在shell脚本或其他地方自动化上述过程。

1
感谢您的回答。然而,它并没有真正解决我的问题。情况是外部开发人员将从他们的检出提交,我将运行一个更新脚本来执行导出。我确实想出了一个办法,可以尝试捕获svn export命令的输出,因为它在结尾处打印“已导出修订版本...”。 - user120465

2

您可以在导出之前(或之后)执行svn info /path/to/repository,但是您需要锁定以确保没有进行更改。

或者,使用您的评论中描述的技术并通过 shell 脚本进行管道传输,例如:

svn export /path/to/repository | grep ^Exported > revision.txt

或者

svn export /path/to/repository | tail -l > revision.txt

如果您在之前或者之后做这件事,它们可能会有不同的版本。 - Dennis C

0

或者,您可以从本地副本执行 svn update 然后执行 svn export。这样做的好处是Subversion将使用“rsync”(或其他算法)仅更新更改的文件。然后,您只需从本地副本导出,节省带宽,并保留所有存储库信息与本地检出。

创建两个目录,一个用于检出,另一个用于导出,然后使用两步流程部署:

svn update /path/to/repository checkout/project
svn export checkout/project export/project

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接