首页 文章

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

提问于
浏览
6

根据Apache Subversion 1.7 release notes

而不是工作副本中每个目录中的.svn目录,Subversion 1.7工作副本只有一个.svn目录 - 位于工作副本的根目录中 .

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

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

这样做的含义是,如果我尝试从根级别进行提交,它只会知道最初检出的目录 . 我还必须单独提交任何后续结账 .

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

1 回答

  • 6

    简答:不 . 每个都是单独的结账,并有自己的数据库 . 我敢肯定,如果你理解隐藏在 .svn 目录中的深层魔法,你可以让它去做你想做的事情 . 但是,与Subversion版本1.1到1.6不同, .svn 目录的结构要复杂得多,而且不容易理解 .

    在您的情况下,最好的办法是重新检查所有内容,并进行新的结帐以包含这两个项目 .

    如果你想定期这样做,你应该做的是使用 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 目录,但没有别的 . 它's fast, and I don' t结帐了很多我不想要的东西 .

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

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

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

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

    $ svn update --set-depth = infinity foundation

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

相关问题