从
old.package to new.package
移动文件时,我希望发生两件事:
svn move old/package/Foo.java new/package/Foo.java
我在 Eclipse Ganymede 中使用 subversive。当我将文件从一个包拖到另一个包时,所有引用都会更新,并且文件会在文件系统上移动。但 SVN 不知道这一点,因此当
svn move old/package/foo.java new/package/Foo.java
不存在时,old/package/Foo.java
命令不起作用(显然)(因为 Eclipse 已经移动了它)。
有没有办法让 Eclipse 进行重构,但使用 svn 在文件系统上移动文件?我希望我只是错过了一些明显的东西:-)
我使用Subclipse,它确实支持在包之间移动文件
我一直在尝试,并且认为我已经找到了方法:
1) 使用右键单击并拖动上下文菜单(或任何您想要的 SVN 方法)来龟式移动文件。
2)使用Windows文件系统将其移回来。
3) 在 Eclipse 中拖移文件以更新所有引用。
4)提交 - 它显示为删除/添加,但它保存历史记录,并且它确实在一次提交中更改了包引用(保持每个提交可构建)。
老问题,但我不断回到它,所以这是我的文档!
尤瓦尔是对的。这听起来像是 Subversive 的一个(非常不幸!)缺陷。 (没有使用 Subversive 的经验,我不能肯定地说)Subclipse 肯定可以通过挂接到 Eclipse 中正确的 API 来正确处理这个问题。
您不能同时执行这两项操作,因为单独移动文件是不够的。需要修改这些文件才能使您的代码再次可编译。因此,使用 Eclipse 进行重构,并让 Subclipse 在移动后发挥其魔力(删除旧文件,添加新文件)。
这已经很旧了,但仍然是一个问题。我使用重构将与 servlet 关联的类移动到新包中。然后打开 web.xml,找到 servlet 并将新的包名称添加到标记中。我将 GetArticle servlet 从默认包移至 api 包:
<servlet>
<description></description>
<display-name>GetArticles</display-name>
<servlet-name>GetArticles</servlet-name>
<servlet-class>api.GetArticles</servlet-class>
</servlet>
如果您让 Eclipse 进行重构,那么它肯定会对提交根目录时 SVN 应拾取的实际文件进行更改吗?我不认为此举会消除它,SVN 将不得不发现该文件从其原始目录中丢失,但从新目录中重新添加它。这是一个棘手的情况,我不知道最好的方法是什么,我只是进行重构,然后亲自提交根,即使这不是一个举动。