svn - 如何使用 Subversion 1.7+ 合并多个隐藏的 .svn 目录

标签 svn version-control tortoisesvn

根据Apache Subversion 1.7 release notes :

Instead of a .svn directory in every directory in the working copy, Subversion 1.7 working copies have just one .svn directory—in the root of the working copy.



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

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

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

无论如何改变这种行为或使两个隐藏的 .svn 目录合并在一起?或者我是否必须在我第一次结帐时执行诸如检查整个存储库目录结构之类的操作?

最佳答案

简短回答:不。每个都是单独的结帐,并且有自己的数据库。我相信你是否了解隐藏在 .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

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

以后,我想在foundation做一些工作:

$ svn update --set-depth=infinity Foundation

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

关于svn - 如何使用 Subversion 1.7+ 合并多个隐藏的 .svn 目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12408397/

相关文章:

visual-studio-2008 - 如何设置 svn :needs-lock Subversion property through AnkhSVN plug-in with Visual Studio?

git - merge 分支之间的大变化的技巧

svn - 如何避免Subversion中的复杂合并?

version-control - 如何在SourceTree中丢弃多个文件?

c# - SharpSVN路径问题

svn-bench 和 fsfs-stats 二进制使用情况

svn - 使 Subversion 修订版号在我的 R 脚本中可见

git - 从存储库中删除忽略的文件

svn - TortoiseSVN写锁错误?

version-control - 简单的单用户版本控制