从仓库中检出一个目录时,.svn应该在哪里?

时间:2018-09-05 21:36:02

标签: svn tortoisesvn

项目(ABC,DEF等)组织在一个SVN存储库中。

Repo ------ABC
     +-----DEF
     +-----GHI
     +-----JKL

为了避免检出整个(大量)存储库,我(通过TortoiseSVN)检出了我正在处理的两个项目DEF和JKL。

更新/提交周期对于这两者都适用,但是我对.svn文件的不同位置感到困惑。

myproj ------dir1------DEF+-----file1.c
                          +-----file2.c
                          +-----.svn
       +-----dir2+-----.svn
                 +-----JKL+-----file3.c
                          +-----file4.c

从存储库中检出一个目录时,.svn应该在哪里?如果两个位置都正确,那么不同结构的意义何在?

更新

我应该提到,这是两个完全不同的项目,协作团队完全不同,更新/提交周期完全独立。我不确定以这种方式将save SVN存储库用于多个项目是否明智。

更新2

即使我要在这两个项目中的每个项目中独立进行更新/提交,我也希望在结帐后在工作目录中看到该项目的名称(DEF,..)。这可以让我轻而易举地确认自己来对地方了。

2 个答案:

答案 0 :(得分:0)

好像您创建了dir1,然后在内部创建了DEF,然后在其上签出了DEF(通过其路径Repo/DEF)。您还创建了dir2,然后在其上签出了Repo(通过其路径Repo),但是在其中仅选择了JKL,即所谓的稀疏工作副本(您单击“选择项目...”按钮,然后在其他窗口中仅选择JKL文件夹,然后取消选择所有其余的窗口。)

如果您在JKL中创建了dir2,并在其上签出了JKL(通过其路径Repo/JKL),那么.svn文件夹将位于JKL

答案 1 :(得分:0)

  • .svn属于工作副本根¹。存储库的结构无关紧要,因为工作副本可以指向存储库中的任何文件夹。

  • 保存工作副本的目录名称是您选择的名称。您甚至可以重命名它,在Subversion中什么都不会破坏。

¹嗯,差不多。如果您检出带有external文件夹的工作副本,则您将在外部根目录中找到另一个.svn目录,也许是在外部工作副本中的更深层次。

如果所有项目的布局都相同,那么您执行两种签出的方式都不相同:

  • 对于DEF,您在/myproj/dir1/DEF/上有一个指向file:///Repo/DEF的工作副本。
  • 对于JKL,您在/myproj/dir2处有一个工作副本,该副本指向file:///Repo/,该副本仅包含file:///Repo/JKL并且排除其同级项。

恕我直言,这令人困惑,很可能是非自愿的错误。但是,我坚持认为,您的工作副本的布局不需要与存储库的布局匹配。