来自2条不同路径的SVN结账

时间:2013-06-04 03:34:45

标签: svn tortoisesvn svn-checkout

我们有一个svn存储库。

我想从这个存储库中检出几个文件夹到我的本地机器。具体来说,我想检查从svn到我的工作区的7个文件夹,它出现在C:/ workspace。 (这样在结账后结构变成C:/ workspace /(所有7个文件夹))。

问题是:在7个文件夹中,4个在路径1上,其他3个文件夹在路径2上。

这是我尝试过的,

  1. 转到C.
  2. 右键单击工作区,
  3. Checkout,然后我给了path1,我得到了4个文件夹。 (现在结构变为C:/ workspace /(来自path1的4个文件夹))。一切都好,直到这里。 4.现在如果我再次右键单击工作区(从path2获取其他3个文件夹),我找不到结帐选项。
  4. 我尝试在工作区内手动创建文件夹(使用“新建文件夹”选项),并从svn检出内容,但这会使文件夹与svn不同步(工作区上没有绿色标记)。

    我正在使用svn tortoise windows shell实用程序。

    请建议需要做什么才能获得结构C:/ workspace /(来自svn的所有7个文件夹)。

4 个答案:

答案 0 :(得分:0)

选项4是一种正确的方法。但你是对的,workspace目录不会被版本化。那是因为你从未检查过 - 你只检查了它下面的目录。相反,7个目录中的每个目录都有自己的.svn目录,而不是workspace级别的目录。在这种情况下,我认为您无法对多个根目录中的文件进行更改。

您可能考虑的另一个选择是将所需文件夹标记或分支到存储库的另一部分,然后检查出来。

答案 1 :(得分:0)

您可以将第二个存储库中的其他三个文件夹签出到单独的文件夹,然后将文件夹移动到第一个结帐。它有效。

  1. 转到C.
  2. 右键单击工作区,
  3. 结帐路径1,我得到4个文件夹。 (现在结构变成C:/ workspace /(4个文件夹 来自path1))。
  4. 在C
  5. 下创建新文件夹path2
  6. 右键单击并检查路径2(现在结构为path2 /(3个文件夹)
  7. 将三个文件夹移动到上一个结帐文件夹 (现在结构是C:/ workpace /(7folders)\
  8. 第二组3个文件夹是版本化的(它们显示绿色勾号)。这些文件夹中的任何签到都将转到第二个SVN路径)

答案 2 :(得分:0)

要获得所需的布局,请查看c:/Workspace下七个文件夹中每个文件夹的根目录,以便进行7次不同的结帐。

在您评论标记/分支的评论中 - 请勿对c:/Workspace中的文件夹执行此操作。相反,要么;

  1. 使用copy to...命令或
  2. 在repobrowser中执行此操作
  3. 在不同位置检出每个项目的主干,并将其用于分支/标记。无论如何,你可能还需要这些来进行合并(再次,不要在c:workspace上执行此操作!)。
  4. ...然后svn根据需要在c:/ workspace中切换文件夹。

    由于这当然容易出错,因此请考虑编写重复部分的脚本。对于结账和交换,ant build.xml很容易。

答案 3 :(得分:0)

如果这是经常结帐的文件夹组合,您可以考虑使用svn:externals:在 path1 上,设置 svn:externals -property从 path2 获取4个文件夹。

或者,您可以在任一存储库中创建一个全新的文件夹并设置_svn_externals_,以便检出所有7个文件夹。 (请注意,从Subversion 1.5开始,您还可以对同一存储库中的路径使用相对定义。)