在subversion项目中管理更新第三方组件的最佳方法是什么?

时间:2009-09-12 20:28:42

标签: svn

我经常有基于svn的项目,包括第三方组件,如TinyMCE(浏览器中的WYSIWYG)编辑器。这包括几十个文件夹,可能包含数百个文件。

理想情况下,当我想将TinyMCE更新到最新版本时,我希望能够将顶级TinyMCE文件夹复制到我的工作副本中,提交更改并离开。

显然,这不起作用,因为通过复制顶部,我将消除通过工作副本嵌套的所有现有.svn文件夹。

手动更新所有文件需要数小时。

有没有一种方法可以使用svn来管理它?

或者,是否有任何工具(在Linux或OS X上)可以帮助我更轻松地执行“手动”复制?

5 个答案:

答案 0 :(得分:2)

我不明白“显然,这不会起作用,因为通过复制顶部,我将消除通过工作副本嵌套的所有现有.svn文件夹。”您使用的是哪种操作系统?

我使用Linux Web Server作为我的SVN服务器和Windows机器来工作。没有“甩掉”.svn文件夹这样的东西:你只是将文件复制到签出目录,因为它们被更改,我只是使用TortoiseSVN提交它们。

这不是保持结构的“最佳方式”。但它确实有效。

磁盘空间通常不是问题,因此您通常可以创建第三方应用程序的存储库,因此您不依赖于Internet访问来构建/部署应用程序。

svnrepositories
  myprojects
    myprojet
  third-party
    tinymce
      1.3

他们使用svn:externals属性,就像 BrianLy 所指出的那样。

您可以指出互联网上的外部资源。但请记住,缺点是资源可能处于脱机状态,您需要访问Internet。

答案 1 :(得分:1)

我认为你应该看看svn:externals属性。

答案 2 :(得分:1)

“在subversion中管理更新第三方组件的最佳方式”?

Vendor branches。作为奖励,您可以修改第三方组件的代码,并且由于合并,修改将在更新后继续存在。

答案 3 :(得分:0)

使用svn:externals,包括修订锁参数-r {REV.NR。},这可以确保您不会以不合时宜的方式从第三方供应商的svn-repository获取更新。

然后,您可以在自己的时间内,升级到第三方组件的最新版本,只需将-r {REV.NR。}参数设置为外部存储库的最新版本。

答案 4 :(得分:0)

包含库版本到路径适用于我。这种更新版本的方法只需删除旧版本,添加新版本并将引用指向新路径。

$ svn del vendor/tinymce-3.4.2
$ svn add vendor/tinymce-3.4.3
$ # edit references to point to vendor/tinymce-3.4.3

但是如果你想对库进行更改,我会选择上面评论的供应商分支。