20

从我移动文件时,old.package to new.package我希望发生两件事:

  1. 更新对该类的所有引用(在项目的所有文件中),以便使用新包
  2. 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 将文件移动到文件系统上?我希望我只是错过了一些明显的东西:-)

4

5 回答 5

16

我使用Subclipse,它确实支持在包之间移动文件

于 2009-01-07T12:13:50.427 回答
3

我一直在尝试,并认为我找到了方法:

1)使用右键单击拖动上下文菜单(或您想要的任何SVN方法)乌龟移动文件。

2)使用Windows文件系统将其移回。

3) 在 Eclipse 中拖动移动文件以更新所有引用。

4)提交 - 它显示为删除/添加,但它保存了历史记录,并且它确实在一次提交中更改了包引用(保持每个提交可构建)。

老问题,但我一直在回过头来,所以这是我的文档!

于 2010-07-13T20:40:43.933 回答
1

尤瓦尔是对的。这听起来像是 Subversive 中的一个(非常不幸!)缺陷。(没有使用 Subversive 的经验,我不能肯定地说)Subclipse 肯定会通过在 Eclipse 中连接到正确的 API 来正确处理这个问题。

于 2009-01-07T17:46:07.853 回答
0

您不能同时进行这两项操作,因为仅移动文件是不够的。需要修改这些文件才能再次编译您的代码。所以用 Eclipse 重构,让 Subclipse 在移动之后发挥它的魔力(删除旧文件,添加新文件)。

于 2009-01-07T12:17:54.927 回答
-1

如果您让 Eclipse 进行重构,那么它肯定会在您提交根目录时对 SVN 应该获取的实际文件进行更改?我不认为移动会削减它,SVN 将不得不从其原始目录中发现该文件丢失,但从新目录中重新添加它。这是一个棘手的情况,我不知道最好的方法是什么,我只是进行重构,然后亲自提交根,即使这不会是一个举动。

于 2009-01-07T11:50:56.400 回答