【问题标题】:Svn 1.7 - How to switch working copy to relocated repo when working copy has non-existent revisionSvn 1.7 - 当工作副本不存在修订时如何将工作副本切换到重新定位的仓库
【发布时间】:2012-02-02 14:07:06
【问题描述】:

在 svn repo http://svn/repoA/path1/ 中有一个 svn 项目。调用这个原始仓库

这已复制到 http://svn/repoA/path2 。调用这个新仓库

我们的一台机器上的本地工作副本(从原始存储库中签出)在此副本发生后进行了更新。

然后原来的repo被删除了。

我们现在希望将工作副本重新集成到新的 repo 中。

svn switch 适合这个。在项目基目录中运行:

svn switch http://svn/repoA/path2

但是,switch 抱怨,因为该项目的修订号在新的 repo 中不存在。

在 svn 1.6 中,我会在项目基础目录下递归更改 .svn/entries 中的修订号,它以明文形式存储。

在 svn 1.7 中,此类信息似乎被不透明地(以某种方式编码)存储到 .svn/wc.db 或其他新文件中。

我的问题是:如何强制工作副本认为它是复制的修订历史上的现有修订,以便我可以将其切换到克隆的 repo 文件夹,然后更新它?

【问题讨论】:

    标签: svn switch-statement revision


    【解决方案1】:

    你知道你不应该接触那些.svn 目录。我敢打赌,即使有一个标签清楚地写着警告:里面没有用户可维修的部件,你也会打开电子设备的背面。除非想要因触电而猝死,否则不要打开

    是的,我也是。

    您仍然可以在旧工作目录上执行svn status 来查找更改的文件,然后将它们复制到新的工作目录。即使旧存储库不存在,svn status 也可以工作。

    或者,您可以在另一个目录中签出新的工作副本,从旧的工作副本中删除所有旧的 .svn 目录,然后将所有这些文件复制到新的工作目录。然后,您可以发送svn status 来查找更改的内容并修复这些问题。

    【讨论】:

      【解决方案2】:

      SVN 开关通常会删除新存储库中不存在的文件并添加新存储库中存在的文件。但是,在您的情况下,没有等效的版本可以切换。因此,svn switch 确实不适合这项工作。

      查看svn import 以从签出的工作存储库中重建旧的“原始”服务器存储库。

      如果您真的想像以前那样做,请记住,SVN 现在使用更少的 .svn 目录。在结帐的根目录中查找重要的 .svn 目录。还要记住,大部分信息不再使用文本文件结构化,而是使用 SQLLite 二进制数据库。可以使用兼容 SQLLite 的数据库客户端修改数据库条目;但是,这是非常不推荐的。与使用旧文本文件相比,您将工作存储库变成一堆黏糊糊的风险要大得多。

      如果意图是删除大量修订历史记录,但您希望修订编号匹配,则需要重建 repo1 以使其丢失不需要的历史记录,但修订编号匹配。为此,

      svnadmin dump /path/to/repo2 -r<start>:<end> > svn.dump
      svnadmin create /path/to/repo1
      svnadmin load /path/to/repo1 < svn.dump
      

      或者在我的假例子中,rev 8323 是要保留的最后一点历史记录,当前 rev 是 9929。

      svnadmin dump /path/to/repo2 -r8323:9929 > svn.dump
      svnadmin create /path/to/repo1
      svnadmin load /path/to/repo1 < svn.dump
      

      【讨论】:

      • 感谢您的信息。我认为修改修订号会起作用,因为 wc 与新的 repo 共享祖先,并且自他们共享的共同修订版以来没有改变,它只是一个修订版,之后没有任何更改。我正在寻找最简单的方法,可以最好地生成冲突信息而不会覆盖哑差异。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-24
      • 2011-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-23
      相关资源
      最近更新 更多