2011-02-13 157 views
2

我有一个SVN项目,我正在处理这太杂乱,资源被命名为可怕的,项目文件充满了错误的信息和链接,几乎不可能搜索和销毁。最重要的是,档案档案需要认真重新安排才能做出理解。我这样做是因为我完全打算用一个名为相同事物的新项目解决问题,并且只通过良好的整洁文件夹和目录转移“良好”代码和资源。替换整个SVN目录

所以我的问题是,我有一个项目“FOOBAR”,这是所有结束了。在我的桌面上,我有“FOOBAR_FIXED”,它不受版本控制,但是现在我想在我的'FOOBAR'SVN上使用。

我如何将'FOOBAR'全部替换为'FOOBAR_FIXED'?无需手动删除所有对象,提交,然后再次手动添加所有对象并重新发布?

+0

如果文件已被重命名等,并且新项目本身完成,那么为什么(实质上)将两个文件集合并在一起? – 2011-02-13 01:25:19

回答

0

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

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

2

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

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

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

  3. 结帐中继线。并将补丁应用到检出版本。

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

希望这会起作用。你应该再次运行任何测试,以确保一切正确。

首先删除干线中的所有内容,然后检查整个新版本,将会容易得多。