我最近将我的 SVN 客户端从 1.6.9 升级到 1.7.2,在转换为新格式后,我注意到每个子文件夹不再有 .svn。对于我的特定配置,这不是很方便。
有没有办法撤消此操作或恢复到 CO 中的每个子文件夹都有 .svn 的旧行为?
我最近将我的 SVN 客户端从 1.6.9 升级到 1.7.2,在转换为新格式后,我注意到每个子文件夹不再有 .svn。对于我的特定配置,这不是很方便。
有没有办法撤消此操作或恢复到 CO 中的每个子文件夹都有 .svn 的旧行为?
Subversion 1.7 完全重写了 Subversion 的工作副本元数据管理系统,代号为 WC-NG。旧系统是 Subversion 最早编写的部分之一,随着时间的推移,它变得难以维护和扩展。WC-NG 旨在提供即时的性能改进,同时还支持许多未来的功能增强。
Subversion 1.7 中引入的更改的一个关键特性是将工作副本元数据存储集中到一个位置。Subversion 1.7 工作副本在工作副本的每个目录中都没有一个 .svn 目录,而是在工作副本的根目录中只有一个 .svn 目录。该目录包括(除其他外)一个 SQLite 支持的数据库,其中包含该工作副本所需的所有元数据 Subversion。
即使数据以结构化格式存储,数据之间的关系也很复杂。我们强烈反对外部工具修改此数据库中保存的数据,因为此类修改可能会导致工作副本损坏。
让 subversion 在每个目录中写出 .svn 目录的最直接方法是将您的 subversion 降级到 1.7 系列之前的版本。 Subversion 1.6.23是最后一个具有您想要的行为的版本。
另一种适用于 Subversion 1.7 及更高版本的方法是单独检查项目的每个子目录。例如,如果您有一个目录结构如下的项目:
project
`- bin
`- etc
您可以通过执行以下操作来检查它:
mkdir project
cd project
svn co svn+ssh://foo@bar.org/src/project/bin
svn co svn+ssh://foo@bar.org/src/project/etc
只有当您的目录很少并且它们的组织很浅时,这才是可以容忍的。
否则,降级到较旧的颠覆是您最好的选择。