【问题标题】:Replace entire SVN directory替换整个 SVN 目录
【发布时间】:2011-06-26 06:59:33
【问题描述】:

我正在处理的一个 SVN 项目非常混乱,资源名称很糟糕,项目文件中充满了错误信息和几乎无法搜索和销毁的链接。最重要的是,文件档案需要认真重新排列以使其具有任何可理解的意义。我这样做是因为我完全打算用一个新项目来解决问题,该项目名称相同,并且只将“好的”代码和资源全部转移到漂亮整洁的文件夹和目录中。

所以我的问题是我有一个项目“FOOBAR”,它已经全部完成了。在我的桌面上,我有“FOOBAR_FIXED”,它不受修订控制,但现在是我在“FOOBAR”SVN 上想要的。

如何将所有“FOOBAR”替换为“FOOBAR_FIXED”?无需手动删除所有对象、提交,然后再次手动添加所有对象并重新提交?

【问题讨论】:

  • 如果文件已被重命名等并且新项目本身已完成,那么为什么(本质上)将两个文件集并排合并?

标签: svn replace branch trunk


【解决方案1】:

如果这是一个绝望的原因,只需启动一个新的存储库,并保留旧的存储库以供参考。

一种中途的措施可能是将trunk重命名为trunk.bad并启动一个新的trunk。

【讨论】:

    【解决方案2】:

    您将其描述为另一个项目,因此它可能应该是另一个项目。但是如果你想替换当前的分支,并且真的想在一次提交中完成,而不是在 svn 之外进行重组,你应该创建一个新的主干分支,在那里进行更改,然后复制/合并清理干净的树枝放回树干。但是现在你已经完成了,这就是我的处理方法。

    1. 导出中继。 (不是结帐。导出。我们想要一个没有 svn 跟踪信息的版本。)

    2. 使用diff工具对导出的trunk和固定版本的trunk进行diff,并将差异导出到补丁中。

    3. 检查后备箱。并将补丁应用到签出的版本。

    4. 使用svn status查找完全删除的文件,使用svn rm记录删除和添加的文件,使用svn add添加。 (我相信linux系统上的命令是svn status | grep "^!" | cut -f 2 | xargs svn rm来记录旧文件的删除,虽然我可能把cut的参数弄错了。我会把添加新文件的版本留作练习,但它old 应该相差一个字符并将“svn rm”更改为“svn add”)

    希望这会奏效。您绝对应该再次运行任何测试以确保一切正确。

    先删除trunk里的所有东西,然后再签入整个新版本,会容易得多。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多