svn:如何将两个文件夹合并为一个?

时间:2011-10-14 20:00:04

标签: svn merge

问题听起来很简单,但我觉得这样做不对。 如何将两个文件夹合并为一个?

假设我有这种maven结构:

module1
  - src/main/java
      - com.app.func1
           - file1
      - com.app.func1.some2
           - file3
           - file4

module2
  - src/main/java
      - com.app.func1
           - file1
           - file111
      - com.app.func1.some2
           - file333
           - file6

我想将module2中的整个src / main / java合并到module1

合并后,它应如下所示:

module1
  - src/main/java
      - com.app.func1
           - file1 // it would be nice if the tool would let me visually merge this item
           - file111
      - com.app.func1.some2
           - file3
           - file333
           - file4
           - file6

两个模块都已受版本控制,我不想放弃历史。

如果有人可以帮助我,那就太好了。

我已经尝试过Eclipse subversive / subclipse和Tortoise SVN,但我做得不对。

大部分时间我都收到一些错误消息,比如module1中已存在文件夹src。这是对的,但我实际上并不关心文件夹,它们应该像在Windows上一样集成。 通过合并的其他时间,module1中的所有文件都将被删除并被module2中的文件覆盖。

此致

3 个答案:

答案 0 :(得分:1)

http://jv-ration.com/2014/01/merge-svn-directories/上描述的脚本有点类似。您只需要跳过步骤#3,它将删除目标文件夹中的文件(在您的情况下,模块1)。

执行完脚本后,您可以使用任何SVN工具来查看已更改文件的差异。

答案 1 :(得分:0)

我认为您必须为每个文件执行svn rename。您可以使用svn list输出的脚本来帮助自动化它。你不会让它合并具有相同名称的文件:你必须手动完成这些。

答案 2 :(得分:0)

看起来这个愚蠢的问题没有简单的解决方案。

作为一种解决方法,我在Java视角中使用eclipse移动了所有源代码。

标记com.app.func1和src / main / java(maven)下的所有文件夹,然后用鼠标移动到module1 src / main / java或使用Refactor - >移动

Eclipse自动做正确的事情,它使用svn move而不是愚蠢的移动,因此历史记录不会被删除。遗憾的是,您无法移动非Java文件夹,因为您将收到上述错误(文件夹已存在)。

提示:两个模块必须已经处于版本控制之下,并且必须安装某个SVN插件,否则您将丢失所有历史记录条目。

module2
- src/main/java
  + com.app.func1
  + com.app.func1.some2