首页 > 解决方案 > 从回购中签出一个目录时,“.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从回购中签出一个目录时应该在哪里?如果两个位置都正确,那么不同结构的意义是什么?

更新

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

更新 2

尽管我想在这两个项目中的每一个中独立更新/提交,但我确实希望在结帐后在我的工作目录中看到项目的名称(DEF,..)。这给了我一个温和的确认,我在正确的地方。

标签: svntortoisesvn

解决方案


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

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

¹嗯,差不多。如果您使用外部文件夹签出工作副本,您将.svn在外部根目录中获得另一个目录,可能在外部工作副本的深处。

如果所有项目布局都相同,则您没有以相同的方式执行两个签出:

  • 因为DEF你有一个工作副本/myproj/dir1/DEF/,指向file:///Repo/DEF.
  • 因为您在那一点上JKL有一个工作副本,它只包括和排除它的兄弟姐妹。/myproj/dir2file:///Repo/file:///Repo/JKL

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


推荐阅读