从old.package to new.package
移动文件时,我希望发生两件事:
svn move old/package/Foo.java new/package/Foo.java
我在Eclipse Ganymede中使用颠覆。当我将文件从一个包拖到另一个包时,所有引用都会更新,文件在文件系统上移动。但是SVN没有意识到这一点,因此svn move old/package/foo.java new/package/Foo.java
命令在old/package/Foo.java
不存在时显然不起作用(因为eclipse已经移动了它)。
有没有办法让eclipse做重构但是使用svn来移动文件系统上的文件?我希望我只是遗漏了一些明显的东西: - )
答案 0 :(得分:16)
我使用Subclipse并且支持支持在包之间移动文件
答案 1 :(得分:3)
我一直在试验,并认为我找到了方法:
1)Tortoise-使用右键单击拖动上下文菜单(或任何您想要的SVN方法)移动文件。
2)使用windows文件系统将其移回。
3)在Eclipse中拖动文件以更新所有引用。
4)提交 - 它显示为删除/添加,但它保存了历史记录,它确实在一次提交中更改了包引用(保持每个提交都可构建)。
老问题,但我一直回到它,所以这是我的文档!
答案 2 :(得分:1)
Yuval是对的。这听起来像是颠覆性的(非常不幸!)缺陷。 (没有Subversive的经验我不能肯定地说)Subclipse绝对可以通过在Eclipse中连接到正确的API来正确处理它。
答案 3 :(得分:0)
您无法同时执行这两项操作,因为单独移动文件是不够的。需要修改这些文件,以便您的代码可以再次编译。所以使用Eclipse进行重构,让Subclipse在移动后完成它的魔法(删除旧文件,添加新文件)。
答案 4 :(得分:-1)
如果让Eclipse进行重构,那么肯定会在提交根目录时对SVN应该提取的实际文件进行更改吗?我不认为移动会削减它,SVN将不得不从原始目录中获取该文件,但是从新目录重新添加它。这是一个棘手的情况,我不知道最好的方法是什么,我只是进行重构,然后亲自提交root,即使这不是一个动作。