项目(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/
。
恕我直言,这令人困惑,很可能是一个非自愿的错误。但是,我坚持认为,工作副本的布局不需要与存储库的布局相匹配。