子目录的SVN外部仅保留svn中的叶子目录

时间:2010-02-19 15:09:50

标签: svn svn-externals

我正在尝试添加类似的内容:

subdir
  modules
    module1ext
    module2ext
    module3NOText
  other dir not from externals

其中subdir / modules / module {1,2} ext特别是在外部定义,但不是/ subdir和/modules.This基本上将模块{1,2} ext添加到svn repo,但不是subir和modules

所以,现在我想在subdir(其他目录不是来自外部)或模块(module3NOText)下添加一个目录,我不能,因为父目录不在svn下。我应该svn添加它们吗?这不会搞砸外部的定义吗?

另外,假设我要修改module1ext。我正在考虑删除外部定义,然后svn添加该目录。根据我的经验,这是有效的,但你能告诉我它是否有任何缺点或是否应该完成?

1 个答案:

答案 0 :(得分:1)

你似乎在这里混淆了一些东西。

您的存储库应如下所示:

trunk
   subdir
     modules ---------> property svn:externals with links to module1ext and module2ext
        module3NOText
   otherdirnotfromexternals

签出主干时,所有文件夹(subdir,modules,module3NOTExt,otherdirnotfromexternals)都在svn版本控制之下。模块应包含两个外部模块(如果正确设置了svn:externals属性)。

因此,在子目录或模块下添加目录应该通过svn add。

完成

如果要修改外部代码,您可能还想跟上原始存储库中可能的更改。换句话说,您想要创建一个分支。

  • 如果代码在SAME存储库中,您只需使用svn copy创建分支,并使用svn merge
  • 如果代码在另一个存储库中,您可以将其作为vendor branch进行管理。简而言之:您在自己的存储库中导入代码,标记它以标记您开始的点,将其分支到您自己的项目并从那里进行修改。要合并原始代码中的更改,请在供应商分支中导入新版本,再次标记并将更改合并到项目分支中。