6

根据Apache Subversion 1.7 发行说明

Subversion 1.7 工作副本在工作副本的每个目录中都没有一个 .svn 目录,而是在工作副本的根目录中只有一个 .svn 目录。

假设存储库中有多个目录,当我第一次签出时,我只选择性地签出特定目录。正如文档所说,这只会在顶级目录中创建一个 .svn 隐藏文件夹。

但是,如果我稍后决定签出另一个目录,则在签出完成后,新签出的目录中将有另一个 .svn 目录。

这意味着如果我尝试从根级别进行提交,它只会知道最初签出的目录。我还必须单独提交任何后续结帐。

有没有办法改变这种行为或使两个隐藏的 .svn 目录合并在一起?或者我是否必须在第一次结帐时检查整个存储库目录结构?

4

1 回答 1

6

简短的回答:不。每个都是单独的结帐并有自己的数据库。我敢肯定,如果您了解隐藏在.svn目录中的深层魔法,您可以使用它来做您想做的事。然而,与 Subversion 1.1 到 1.6 不同的是,该.svn目录的结构要复杂得多,而且不容易理解。

在您的情况下,最好的办法是重新签入所有内容,然后重新签出以包括两个项目。

如果您想定期执行此操作,您应该做的是使用--depth=insvn co--set-depth=in svn update

例如,我正在检查基本目录,但我不想要其他任何东西:

$ svn co --depth=immediates http://svn.vegicorp.com/svn/base_prod
A base_prod/.classpath
A base_prod/.settings
A base_prod/foundation
A base_prod/client
A base_prod/server

这检查了.settingsand.classpath文件,以及foundation, client, andserver目录,但没有别的。它很快,而且我不会检查很多我不想要的东西。

现在,我想在服务器上工作:

$ cd base_prod
$ svn update --set-depth=infinity server

这将更新我的服务器目录,但会检查整个目录结构。我现在可以使用server,但我没有foundationclient文件占用空间。

稍后,我想做一些工作foundation

$ svn update --set-depth=无限基础

现在,我有了foundation目录。.svn而且,我的目录下只有一个base_prod目录。

于 2012-09-13T14:34:56.903 回答