2012-01-30 37 views
20

我最近将我的SVN客户端从1.6.9升级到1.7.2,在转换为新格式后,我发现每个子文件夹都不再有.svn。对于我的特定配置,这不是很方便。SVN不再在所有子文件夹中写入.svn?

有没有办法解决这个问题,或恢复到从CO的每个子文件夹将有一个.svn的旧行为?

+0

我意识到我的问题很隐晦,但我试图在询问之前搜索google/bing,但没发现任何相关信息。任何帮助或指针,将不胜感激。 – MikeJ 2012-01-30 20:19:17

+16

你滥用SVN的哪些部分让.svn文件夹在任何地方都很方便? – Collin 2012-01-30 20:20:11

+1

您可以随时降级您的svn客户端(我认为您必须将其删除并安装旧版本,然后可能再次检索您的存储库(因为它可能不是向后兼容的) – tjarratt 2012-01-30 20:22:48

回答

38

颠覆1.7功能的Subversion工作拷贝元数据管理系统,代号为WC-NG的完全重新编写。旧系统是Subversion的第一部分,随着时间的推移变得越来越难以维护和扩展。 WC-NG旨在提供即时性能改进,同时还可以实现许多未来的功能增强。

Subversion 1.7中引入的变化的一个关键特性是将工作副本元数据存储集中到一个位置。在工作副本的每个目录中,Subversion 1.7工作副本只有一个.svn目录,而不是工作副本的根目录中的.svn目录。该目录包括(除其他之外)SQLite支持的数据库,其中包含该工作副本的所有元数据Subversion需求。

即使数据以结构化格式存储,数据之间的关系也很复杂。我们极力阻止外部工具修改此数据库中保存的数据,因为此类修改可能会导致工作副本损坏。

Read more here.

+5

-1:这个答案有点超出了主题,作为问题的核心部分(“是否有办法恢复到每个子文件夹将具有.svn?的旧行为”)被忽略。 – Wizard79 2012-11-11 16:20:14

+10

@Lorenzo我认为人们应该能够从所提供的文本中读出“不”。 – JPuge 2013-05-08 09:19:57

2

的最直接的方式来获得颠覆写出来的.svn目录,每个目录是1.7系列之前,你颠覆降级到的版本。 Subversion 1.6.23是具有所需行为的最后一个版本。

完成此操作的另一种方法是与Subversion 1.7及更高版本一起工作,即单独检出项目的每个子目录。例如,如果您有类似的目录结构的项目:

project 
`- bin 
`- etc 

你可以检查出来做这样的:

mkdir project 
cd project 
svn co svn+ssh://[email protected]/src/project/bin 
svn co svn+ssh://[email protected]/src/project/etc 

这仅仅是如果你有几个目录和他们的组织容忍很浅。

否则,降级到较旧的颠覆是你最好的选择。