“标记”SVN导出和修订版

时间:2009-06-10 11:40:24

标签: svn export revision

我正在寻找以下情况的解决方案。

我们正在使用Subversion,除了我们使用签出的开发环境之外,我们还有一个测试环境,它应该尽可能地与生产环境相似。

因此,我们现在设置它以便使用SVN导出更新环境。但是,由于我们只想要最新版本,因此我们不知道已导出的修订版本。

是否有某种方法可以“标记”此导出,例如添加一些生成的文件,表明导出了哪个版本? (我们不想导出标签,因为我们将在一个发布周期内多次更新。)

3 个答案:

答案 0 :(得分:3)

您可以做的一件事是确保从已知修订中导出,并将该修订号写入导出中的文本文件。 svnversion命令将告诉您工作目录的修订号。因此,svn update获取最新版本,然后svn export到您的部署位置,然后svnversion将输出重定向到与导出相同位置的文本文件。修订号将是更新时的修订版,即使从那时起有人提交了新代码。

您当然希望在shell脚本中自动执行上述过程。

答案 1 :(得分: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

答案 2 :(得分:0)

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

创建两个目录,一个用于结帐,一个用于导出,然后使用两个步骤进行部署:

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