【问题标题】:Help renaming svn repository帮助重命名 svn 存储库
【发布时间】:2011-01-27 13:18:26
【问题描述】:

这是交易:

  1. 我创建了一个 SVN 存储库,例如 foo。它位于http://www.example.com/foo

  2. 然后我做了一个 svn 结帐。

  3. 我在一周内对我的本地代码副本进行了一些更新和更改。我还没有承诺。

  4. 我意识到我想重命名存储库。所以我这样做了:

svn复制http://example.com/foohttp://example.com/bar

svn删除http://example.com/foo

  1. 我完成了我的更改(本地 svn 仍然认为我在“foo”下工作。)svn commit 失败,因为 repo 已被重命名。

  2. 我尝试使用svn switch --relocate,但它对我大喊大叫,因为 svn 太糟糕了。

  3. 我尝试使用脚本here 将我的十亿个 .svn/ 文件夹中的“foo”替换为“bar”。

  4. 此替换需要很长时间。我想知道是不是挂了什么东西?或者也许 sshfs 失败了?我杀了它。 Ctrl-C。

  5. 我查看并看到我的一半文件在各种 .svn/ 文件夹的 URL 中包含“foo”,而其他文件则包含“bar”。

我要做的就是用新名称提交我的文件。我可以重新签出分支,但是我无法记住我更改了哪些文件,这就是我首先使用版本控制的原因,而 svn 在移动和重命名方面非常糟糕。

我需要做什么:

  1. 有我的“bar”svn 分支的“干净”副本吗?而且,最重要的是:

  2. 提交我所做的更改?

【问题讨论】:

    标签: svn rename


    【解决方案1】:

    --relocate 仅用于基本 URL 更改。

    尝试 svn cleanup 然后 svn switch --force

    【讨论】:

    • 我做了一个“svn cleanup”(花了一段时间,但没有真正做任何事情——不同的“条目”文件仍然有不同的 URL),然后做了一个“svn switch”——没有 - -力量。这成功了。我认为“切换”会破坏我的本地更改,但后来我更仔细地查看了手册。谢谢!
    【解决方案2】:

    如果您确实需要签出一个新版本,然后再次进行所有更改,这应该是一个相当简单的过程,只需将它们推送到新的签出 - 您不需要记住它们,使用 Beyond 之类的工具比较以快速向您显示差异并复制它们。

    即使源代码控制工作完美,我也会花相当多的时间审查差异(即:在提交之前等)。

    【讨论】:

    • hm,这让我想:我可以在两个目录上做一个diff,忽略“.svn”文件夹,然后patch?你知道它是怎么工作的吗?
    • 可以 - 我对 SVN 中的 patch 命令不太熟悉(抱歉,不要直接在其命令行上做太多事情)。但我相信它与使用比较工具并直接将更改逐行应用于文件的原理相同。
    猜你喜欢
    • 2011-05-02
    • 2013-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-17
    • 2011-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多