【问题标题】:"Mark" SVN export with revision“标记”带有修订的 SVN 导出
【发布时间】:2009-06-10 11:40:24
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: svn export revision


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的回答。然而,它并没有真正解决我的问题。情况是外部开发人员将从他们的结帐中提交,我将运行一个执行导出的更新脚本。我确实发现我可以尝试捕获 svn export 命令的输出,因为它最后会打印“Exported revision ...”。
    【解决方案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
    

    【讨论】:

    • 如果你在之前或之后做,它们可能是不同的版本
    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2010-10-13
      • 1970-01-01
      • 2011-05-23
      • 1970-01-01
      • 2011-01-15
      • 1970-01-01
      • 2017-09-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多