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

时间:2010-01-21 20:58:11

标签: wordpress svn svn-externals

我正在使用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仓库中的那个(或者至少不在那个位置)。有没有办法让我设置svn来忽略wordpress / wp-content目录,同时仍然使用外部定义?

4 个答案:

答案 0 :(得分:10)

您真正要问的是,“您能为--depth指定svn:externals”,答案是否定的。外部当前在指定目录上完全递归。

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

答案 1 :(得分:2)

您可以为引用的存储库中的每个子文件夹创建单独的外部。因此,如果你的外部是一个带有项目A,B和C的仓库,你只需要A和B,那么你可以单独为A和B的子文件夹做两个独立的外部引用。

目前我正在使用一个项目执行此操作,但如果您实际对外部进行编辑并提交它们,则可能会遇到问题,因为两个单独的外部更改无法以原子方式提交。即使两个外部实际指向相同的存储库是有意义的,但在使用此技术时需要注意,这个问题仍然存在。

此外,如果您负责第二个存储库,一个选项还是将测试,文档和其他相关文件夹放入另一个单独的存储库中,该存储库具有源代码的外部,以便将它们与主代码存储库分开。这样,由于代码依赖性,在进行外部引用时不会引入这些文件夹。

答案 2 :(得分:0)

您可以使用 sparse directories (也称为浅签出)执行此操作。我不是100%确定它在使用外部时是否有效,但我不明白为什么它不会。

答案 3 :(得分:-1)

如果您尝试删除本地wp-content目录,但通过SVN执行此操作会发生什么?即

svn rm /wordpress/wp-content

这样SVN应该记住你的更改,我假设你没有把东西推到Wordpress仓库,所以你不必担心意外提交它。