项目(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,..)。这可以让我轻而易举地确认自己来对地方了。
答案 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
并且排除其同级项。恕我直言,这令人困惑,很可能是非自愿的错误。但是,我坚持认为,您的工作副本的布局不需要与存储库的布局匹配。