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

3

这个问题看起来很简单,但我就是做不对。如何将两个文件夹合并成一个?

假设我有这样的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,但我做得不对。

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

谢谢!

3个回答

1
这个脚本,http://jv-ration.com/2014/01/merge-svn-directories/中有描述,与此类似。你只需要跳过第三步,即删除目标文件夹中的文件(在你的情况下,是模块1)。
执行完脚本后,您可以使用任何 SVN 工具来查看更改文件的差异。

0

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

作为一种解决方法,我将所有源代码都移到了Java视角下的eclipse中。

标记com.app.func1和src/main/java(maven)下的所有文件夹,并将它们与鼠标一起移动到module1 src/main/java或使用Refactor -> Move。

Eclipse会自动处理正确的事情,它使用svn move而不是愚蠢的移动,所以历史记录不会被删除。不幸的是,您无法移动非java文件夹,因为您会遇到上面提到的错误(文件夹已经存在)。

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

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

0

我认为你需要对每个文件进行 svn rename 操作。你可以编写一个脚本,使用 svn list 的输出来帮助自动化这个过程。但是如果有相同名称的文件,你将无法将它们合并,需要手动处理。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接