从存储库中签出一个目录时,".svn"应该在哪里?



项目(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应该在哪里?如果两个位置都正确,那么不同结构的意义是什么?

更新

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

更新 2

即使我想在这两个项目中的每一个中独立更新/提交,我也希望在签出后在我的工作目录中看到项目的名称(DEF,..(。这给了我一个温和的确认,我来对地方了。

看起来你创建了dir1,然后在里面创建了DEF,然后在它上面签出了DEF(通过它的路径Repo/DEF(。您还创建了dir2,然后在其上签出Repo(按其路径Repo(,但只在其中选择了JKL,即所谓的稀疏工作副本(您单击了按钮"选择项目...",并在附加窗口中仅选择了 JKL 文件夹并取消选择所有其他文件夹(。

如果您在dir2中创建JKL并在其上签出JKL(按其路径Repo/JKL(,则 .svn 文件夹将位于JKL内。

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

  • 保存工作副本的目录的名称是您选择的任何名称。你甚至可以重命名它,在 Subversion 中不会有任何中断。

¹嗯,差不多。如果您签出带有外部文件夹的工作副本,您将在外部根目录中获得另一个.svn目录,也许更深入于外部工作副本内部。

如果所有项目布局都相同,则表示您执行两次检出的方式不同:

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

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

最新更新