我正在寻找以下情况的解决方案。
我们正在使用Subversion,除了我们使用签出的开发环境之外,我们还有一个测试环境,它应该尽可能地与生产环境相似。
因此,我们现在设置它以便使用SVN导出更新环境。但是,由于我们只想要最新版本,因此我们不知道已导出的修订版本。
是否有某种方法可以“标记”此导出,例如添加一些生成的文件,表明导出了哪个版本? (我们不想导出标签,因为我们将在一个发布周期内多次更新。)
答案 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