5

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

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

因此,我们现在对其进行设置,以便使用 SVN 导出更新环境。但是,由于我们只想要最新的修订版,我们不知道导出了哪个修订版。

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

4

3 回答 3

3

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

您当然会希望在 shell 脚本或其他东西中自动执行上述过程。

于 2009-06-10T11:54:40.643 回答
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
于 2010-03-03T18:28:23.540 回答
0

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

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

svn update /path/to/repository checkout/project
svn export checkout/project export/project
于 2010-03-03T19:21:03.587 回答