SVN:如何更新深层文件夹结构?

时间:2011-04-08 16:50:40

标签: svn

我有一个使用由许多文件和目录组成的第三方组件的Web应用程序(CKEditor)。当新版本出现时,我会复制/覆盖现有文件。这会处理添加和修改的内容,但如果新发行版丢失了以前存在的文件,我最终会保留过时的副本。由于SVN依赖.svn文件夹进行状态,我不能只删除旧的根文件夹并复制新文件夹。

是否有一种简单/标准的方法来处理SVN的这种大规模更新?

2 个答案:

答案 0 :(得分:1)

我通常使用rsync--exclude=.svn这类事情。

但我认为CKEditor有一个公共的svn repo,所以在这种情况下,我会使用svn:externals挂钩到特定版本,然后将构建脚本运行到web根目录上的已发布目录,这样我的回购可能会看起来像:

trunk/
  web/
    index.html
    js/
      ckeditor/
    images/
    css/
  lib/
    ckeditor/ (svn:externals to CK_EDITOR_SVN_URL/tags/some-version)

这样我只需切换外部并执行svn。如果您的外部目标项目是连续集成BC更新的版本化分支,则此功能特别有用。这样,无论何时运行svn,都可以获得最新的错误修复,并且可以重建。这是一个好主意是否取决于特定项目的开发方式,因此在执行此操作之前,您需要阅读开发人员文档。

答案 1 :(得分:0)

使用svn:externals是另一种选择。但是,如果您希望在自己的存储库中保留第三方库的快照,则应该阅读SVN中vendor branches的概念。有一个标准的Perl脚本(svn_load_dirs.pl)可用于将第三方代码批量加载到SVN存储库中,以便正确处理删除。