我希望对Subversion项目管理策略有所了解。
我们的一些SVN项目变得非常庞大且笨重。从开发人员的角度来看,可以简单地检查您正在处理的分支,但从项目管理的角度来看,从根目录中检出项目对我来说更有意义。但是除了历史参考之外,还有很多旧的分支和标签根本不相关。
有人建议实施一项策略,即在项目的根目录中创建另一个文件夹(与'branches','tags'和'trunk'一起),称为'archive'。然后可以将较旧的分支和标记移动到该文件夹中,因为它们变得无关紧要,并且用于当前项目管理的结帐可以排除“存档”文件夹。这应该保留与这些分支相关联的历史记录,但不会导致大量本地工作副本的问题。
你觉得这有道理吗?任何想法都会非常感激。
答案 0 :(得分:2)
来自PM的POV结账从repo-root是零值无用的无脑解决方案 - 完整的回购树告诉你没什么但是浪费了很多空间!!!
而且,正如Ben已经指出的那样,旧的不相关的过时节点可以(必须)从存储库中删除 - 因为它们无论如何都存储在历史记录中并且可以在需要时到达
答案 1 :(得分:1)
为什么不删除现在不相关的(svn rm
)分支和标记?如果需要,你仍然可以将它们从历史中删除。它们不会出现在HEAD的分支/标签列表中。
例如,在Subversion项目的repo中有一个名为log-addressing的分支但是如果你查找branch now you won't find it.
您仍然可以找到分支和所有数据。我在分支机构上运行了一个日志,并找到了它被删除的位置:
svn-trunk log ^/subversion/branches --search log-address
其中第一个条目是:
r1546929 | stefan2 | 2013-12-02 00:48:57 - 0800(2013年12月2日,星期一)| 1行
合并后删除日志寻址分支 FSFS-改进。
现在让我说我想查看这个旧分支,如果我只是试着像这样检查一下:
svn co https://svn.apache.org/repos/asf/subversion/branches/log-addressing
我会收到错误消息,说它不存在:
svn:E170000:网址 'https://svn.apache.org/repos/asf/subversion/branches/log-addressing' 不存在
但是,我知道它存在于修订版1546929之前,所以如果我使用peg修订版1546928(少一个)检查修订版本,我将获得它被删除时所处的状态。我可以这样做:
svn co https://svn.apache.org/repos/asf/subversion/branches/log-addressing@1546928
现在让我们说你决定需要那个分支。您可以使用相同的语法从历史记录中恢复它,以指定peg rev作为复制命令的源。
一些有用的进一步阅读可能是SVN书中的以下部分: