【问题标题】:SVN no longer writes .svn in all sub-folders?SVN 不再在所有子文件夹中写入 .svn?
【发布时间】:2012-02-22 14:52:57
【问题描述】:

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

有没有办法撤消此操作或恢复到 CO 中的每个子文件夹都有一个 .svn 的旧行为?

【问题讨论】:

  • 我意识到我的问题很模糊,但我在询问之前尝试搜索 google/bing,但没有找到任何相关内容。任何帮助或指示将不胜感激。
  • 您滥用 SVN 的哪一部分来方便随处使用 .svn 文件夹?
  • 您可以随时降级您的 svn 客户端(我认为您必须删除它并安装旧版本,然后可能再次检索您的存储库(因为它可能不向后兼容)。
  • 我们有一个很深的树来保存第三方库和几个变体。我们使用 subst 驱动器指向树的深处,以方便生活。使用本地 .svn 非常简单。现在我们必须更改到结帐驱动路径才能签入。
  • 您可以通过使用svn info 来获取子目录的URL,然后在其他地方检查它。我同意能够在其他地方修改目录并恢复原始目录很方便。我现在倾向于更频繁地使用分支。

标签: svn version-control version-control-migration


【解决方案1】:

Subversion 1.7 完全重写了 Subversion 的工作副本元数据管理系统,代号为 WC-NG。旧系统是 Subversion 最早编写的部分之一,随着时间的推移,它变得难以维护和扩展。 WC-NG 旨在提供即时性能改进,同时还支持许多未来的功能增强。

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

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

Read more here.

【讨论】:

  • -1:这个答案有点跑题了,作为问题的核心部分(“有没有办法恢复到每个子文件夹都有一个 .svn 的旧行为?”)被忽略。
  • @Lorenzo 我认为人们应该能够从提供的文本中读出“不”。
【解决方案2】:

让 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

只有当您的目录很少并且它们的组织很浅时,这才可以容忍。

否则,最好的选择是降级到旧版本。

【讨论】:

    猜你喜欢
    • 2011-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多