Subversion - 如何在不手动使用svn delete的情况下对项目目录结构进行大规模更改

时间:2011-02-25 09:36:13

标签: svn

这似乎很可能已经得到了解答,但我不确定如何说出来!

我有一个庞大的现有Subversion存储库,对应于特定IDE使用的项目结构,并包含特定于该IDE的各种配置文件。我想将项目迁移到另一个IDE,同时通常保留单个源文件历史记录;除其他外,这将意味着对文件夹结构进行一些更改(整体结构将保持不变),删除配置文件以及创建新的配置文件。

实施例

Old
---

Root
  -src
    -old_ide.xml
  -old_ide_folder
  -docs
  -old_ide.xml

New
---

Root
  -src
  -new_ide_folder
  -docs
  -new_ide.xml

我可以看到我可以在其他地方创建一个新项目,然后将其与旧项目区分开来,并在SVN工作副本中进行一系列单独更改,直到它们匹配为止 - 这样可以得到我想要的最终结果,但是劳动密集型。

最简单的方法(技术允许),我可以看到它只是简单地删除整个项目,使用相同的源文件创建一个新项目,然后以某种方式检查/合并它,但显然是新开始的项目将不会在Subversion工作副本中,所以我认为我不能这样做。

我考虑过简单地将新项目直接复制到一个旧的项目工作副本上,这可能会因为它最终会以新格式的功能项目结束,同时还会留下来自旧项目的各种未使用的文件在存储库中。

要明确:所涉及的IDE并不是真正的问题,我认为我可以在特定情况下手动执行此操作,但我最感兴趣的是对a进行批量更新的一般问题Subversion文件夹结构。

2 个答案:

答案 0 :(得分:0)

我认为没有一个神奇的答案 - 这只是一个问题。在开始之前标记或分支现有布局,以便在需要返回时有一个易于查找的参考点。

否则,它应该只是将现有项目签出到本地工作副本,并使用各种SVN命令(复制,移动,删除)将布局变形为您想要的。我不确定你为什么要避免使用svn delete - 这正是你想要处理IDE特定配置文件之类的东西。一旦你的工作复制是你想要的方式,提交。

答案 1 :(得分:0)

对于 SVN客户端< = 1.6 :似乎没有这个问题的简单答案。可能最好的方法是使用diff工具来简化手动工作,或使用一个脚本将工作副本与新结构进行比较,然后逐个文件地执行进行转换所需的任何更改。

对于 SVN客户端> = 1.7 :工作副本元数据存储的更改(一个顶级.svn文件夹而不是每个源文件夹一个)意味着您实际上可以删除整个旧文件夹结构,将新的一个复制到工作警察中,让SVN在你提交时找出差异。我没有对此进行测试,但我不明白为什么它不起作用。