根据Apache Subversion 1.7 release notes:
Subversion 1.7工作副本在工作副本的根目录中只有一个.svn目录,而不是工作副本中每个目录中的.svn目录。
假设存储库中有多个目录,当我第一次检出时,我只选择性地检出特定目录。正如文档所述,这只会在顶级目录中创建一个.svn隐藏文件夹。
但是,如果我稍后决定签出另一个目录,则在结账完成后,新签出的目录中会有另一个.svn目录。
这样做的含义是,如果我尝试从根级别进行提交,它只会知道最初检出的目录。我还必须单独提交任何后续结账。
是否有改变此行为或使两个隐藏的.svn目录合并在一起?或者我第一次结账时是否需要检查整个存储库目录结构?
答案 0 :(得分:6)
简答:不。每个都是单独的结账,并有自己的数据库。我敢肯定,如果你理解隐藏在.svn
目录中的深层魔法,你就可以把它做成你想做的事。但是,与Subversion版本1.1到1.6不同,.svn
目录的结构要复杂得多,而且不易理解。
在您的情况下,您最好的办法是重新检查所有内容,并进行新的结帐以包含这两个项目。
如果您想定期执行此操作,那么您应该使用--depth=
中的svn co
和--set-depth=
中的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
检查.settings
和.classpath
文件以及foundation
,client
和server
目录,但没有其他内容。这很快,我不会查看很多我不想要的东西。
现在,我想在服务器上工作:
$ cd base_prod
$ svn update --set-depth=infinity server
这将更新我的服务器目录,但 checkout 整个目录结构。我现在可以使用server
,但我没有foundation
或client
个文件占用空间。
稍后,我想在foundation
中做一些工作:
$ svn update --set-depth = infinity foundation
现在,我有foundation
目录。而且,我的.svn
目录下只有一个base_prod
目录。