如何让SVN忽略外部定义中的一个目录

12

我正在使用Subversion来托管WordPress的代码库。我已经将所有核心WordPress文件放在它们自己的目录中(称为wordpress),并设置了svn:externals来链接到WordPress代码库。然后,我有wp-content目录的副本(位于wordpress目录之外),它不使用svn:externals。这一切都很好地运作。

当我更新我的代码库时,WordPress的核心也会得到更新。由于WordPress代码库包含它自己的wp-content目录,因此它也会更新该目录。所以我的文件结构最终看起来像这样:

/
--/wordpress/   (wordpress repo)
-----/wp-admin/
-----/wp-content/
--/wp-content/  (my local repo)

我最终拥有了wp-content文件夹的两个不同版本(来自我的repo和WordPress repo)。我不想要来自WordPress repo的那个版本(或者至少不在那个位置)。有没有办法让我设置svn忽略wordpress/wp-content目录,同时仍然使用外部定义?


我不确定,但你可以尝试在根目录中设置 svn:ignore 属性,看看会发生什么。但很可能不起作用。 - Pekka
似乎不起作用。一旦我更新了工作副本,它就会再次下载wp-content文件。 - NerdStarGamer
我有点晚了,但我认为拥有重复的wp-content并不是问题。假设您已将WP_CONTENT_DIR定义为类似于define( 'WP_CONTENT_DIR', dirname( __FILE__ ) . '/wp-content' );的内容,那么WordPress将忽略其自己的wp-content目录。 - icc97
4个回答

11

您实际上询问的是,“是否可以为svn:externals指定--depth”,答案是否定的。Externals目前对指定目录完全递归。

问题3216请求此功能,但看起来它不会很快到来。


嗯,好的。我想你不能做我想要的事情,但我希望我错过了什么。谢谢。 - NerdStarGamer

2
您可以为被引用存储库中的每个子文件夹创建单独的外部文件。因此,如果您的外部文件是针对包含项目A、B和C的存储库并且您只想要A和B,那么您可以分别为A和B的子文件夹创建两个单独的外部引用。
目前,我正在为一个项目执行此操作,但是如果您实际上正在编辑外部文件并提交它们,则可能会遇到问题,因为两个不同的外部文件中的更改无法原子地提交。即使这两个外部文件实际上指向相同的存储库也存在此问题,这很合理,但在使用此技术时需要注意。
另外,如果您负责第二个存储库,则还可以将测试、文档和其他相关文件夹放入另一个单独的存储库中,并使用外部引用来引用源代码,以便将它们与主要代码存储库隔离开来。这样,在进行外部引用时,由于代码依赖关系,这些文件夹就不会被拉入其中。

0
你可以使用稀疏目录(也称为浅层检出)来实现这一点。我不能百分之百确定在使用外部时它是否有效,但我不认为会有问题。

1
我不认为稀疏目录是我想要的。我希望能够设置我的 SVN 仓库始终忽略此特定文件(在外部定义中),然后忘记它。我不想每次进行更改时都需要输入额外的内容。 - NerdStarGamer

-1
如果您尝试通过SVN删除本地wp-content目录会发生什么?即:
svn rm /wordpress/wp-content

这样 SVN 就会记住您的更改,我假设您没有将东西推送到 Wordpress 存储库,因此您不必担心意外提交它。


1
这个无法运行。svn up 将会把被移除的文件夹还原回来。 - user1406062

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接