我有一个使用由许多文件和目录组成的第三方组件的Web应用程序(CKEditor)。当新版本出现时,我会复制/覆盖现有文件。这会处理添加和修改的内容,但如果新发行版丢失了以前存在的文件,我最终会保留过时的副本。由于SVN依赖.svn文件夹进行状态,我不能只删除旧的根文件夹并复制新文件夹。
是否有一种简单/标准的方法来处理SVN的这种大规模更新?
答案 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存储库中,以便正确处理删除。