替换整个SVN目录

时间:2011-02-13 01:10:41

标签: svn replace branch trunk

我有一个我正在研究的S​​VN项目,它太乱了,资源命名可怕,项目文件充满了错误的信息和几乎不可能搜索和破坏的链接。最重要的是,文件档案需要严肃的重新排列,以使任何可理解的意义。我这样做是因为我完全有意用一个名为同一个东西的新项目来解决这个问题,并且只在好的整齐的文件夹和目录中传输'好'的代码和资源。

所以我的问题是我有一个项目“FOOBAR”,这一切都已经消失了。在我的桌面上,我有“FOOBAR_FIXED”,它不受版本控制,但我现在想要的是“FOOBAR”SVN。

我如何用'FOOBAR_FIXED'替换所有'FOOBAR'?无需手动删除所有对象,提交,然后再次手动添加所有对象并重新启动?

2 个答案:

答案 0 :(得分:2)

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

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

  2. 使用差异工具来区分导出的中继和固定版本的中继,并将差异导出到补丁中。

  3. 检查行李箱。并将补丁应用于签出版本。

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

  5. 希望这会奏效。你应该再次运行任何测试,以确保一切正确。

    首先删除trunk中的所有内容,然后检查整个新版本,会更容易。

答案 1 :(得分:0)

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

中途测量可能是将trunk重命名为trunk.bad并启动新的trunk。