2012-09-13 28 views
6

按照Apache Subversion 1.7 release notes如何整合多个隐藏的.svn目录与Subversion 1.7+

而是在工作拷贝每个目录的.svn目录,颠覆1.7的工作拷贝只有一个的.svn目录 - 在工作副本的根目录中。

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

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

这意味着如果我尝试从根级进行提交,它只会意识到最初检出的目录。我也将不得不单独提交任何后续结账。

无论如何改变这种行为或使两个隐藏的.svn目录合并在一起?或者我将不得不做一些事情,比如第一次结帐时查看整个存储库目录结构?

回答

6

简答题:不可以。每个都是单独的结帐,并有自己的数据库。我敢肯定,如果你了解隐藏在.svn目录中的深藏魔法,你可以将它做成你想做的。但是,与Subversion版本1.1至1.6不同,该目录的结构要复杂得多,而且不易理解。

就你而言,最好的办法是检查一切,并做一个新的结账,包括两个项目。

如果您想定期进行此操作,您应该使用svn co中的--depth=svn update中的--set-depth=

例如,我要退房的基本目录,但我不希望别的:

$ 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文件和foundationclientserver目录, 但没有别的。它速度很快,而且我没有签出很多我不想要的东西。

现在,我想在服务器上运行:

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

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

后来,我想要做一些工作foundation

$ SVN更新--set深度=无穷大的基础

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