如何重命名Java包而不破坏Subversion历史记录?

Joa*_*nis 16 java eclipse svn tortoisesvn renaming

我正在为之工作的公司正在启动,他们在此过程中改名.所以我们仍然使用包名com.oldname,因为我们害怕打破文件更改历史记录,或者版本之间的祖先链接,或者我们可能破坏的任何东西(我不认为我使用正确的术语,但你得到了概念).

我们使用:Eclipse,TortoiseSVN,Subversion

我发现的地方,我应该这样做在很多步骤,以防止在java文件.svn目录和包名的内容之间不连贯:

  • 首先使用TortoiseSVN重命名目录,更新.svn目录.
  • 然后,手动将目录重命名为原始名称.
  • 最后使用Eclipse将包重命名(refactor)重命名为新名称,更新java文件.

这对我来说似乎很好,但我需要知道祖先和历史以及其他一切是否仍然是连贯的并且运作良好.

我没有该服务器的密钥,这就是为什么我不急着备份东西并尝试一两件事.我想提出一个不这样做的好理由,或者一种有效的方法.

谢谢您的帮助,

M. Joanis


包重命名测试

程序:

  1. 创建一个新包com.oldname.test.renametest.subpackage.
  2. 在renametest下添加一个名为RenameTest0.java的新类,其中包含:

    class RenameTest0 {
        public RenameTest0() {
            showMessage();
            new RenameTest1();
        }
        public static void showMessage() {
            System.out.println("RenameTest0!");
        }
        public static void main(String[] args) {
            new RenameTest0();
        }
    }
  3. 在renametest.subpackage下添加一个新类,其中包含:

    class RenameTest1 {
        public RenameTest1() {
            showMessage();
            RenameTest0.showMessage();
        }
        public static void showMessage() {
            System.out.println("RenameTest1!");
        }
    }
  4. 测试RenameTest0运行正常.

  5. 承诺.
  6. 更改两个类的消息.
  7. 承诺.
  8. 再次,更改一个类的消息并提交(只创建一些历史记录).
  9. 应用上面提出的程序(原始消息中的三个步骤)将包重命名重命名为testrename.
  10. 承诺.
  11. 测试运行.
  12. 再次修改消息并进行测试.
  13. 承诺.
  14. 第一次同时更改两条消息时,尝试回滚到该版本.
  15. 如果到目前为止一切正常,它看起来不错,不是吗?

测试结果:

  • 关于步骤9的注意事项:必须以相反的顺序执行(Eclipse重命名为THEN TortoiseSVN重命名.),否则它变得复杂,因为TSVN创建了一个新的文件夹/包并标记旧的删除...所以你不能重命名为Eclipse,除非你同时把旧包放在其他地方,以防止丢失.svn文件夹等.使用这种方法进一步看起来不是一个好主意.(请注意:不要忘记勾选递归包重命名的复选框!)
  • 关于第14步的说明:工作了!我们可以看到以前的版本; 我们所要做的就是告诉不要在复制/移动中断,这没关系.一旦恢复到重命名之前的版本,包名称就不会回到好名字了,可能再次重构它会做到这一点.
  • 结束注释:我很惊讶必须以相反的顺序执行关键步骤.为了在第一个包重命名试验的中间做到这一点,我不得不回滚一些TSVN和手动修改,对这个过程的确切结果的可重复性质产生了一些疑问.我将不得不做第二次测试以确认其有效性.总结一下:它看起来不错,但需要进一步测试.

Álv*_*lez 8

也许这对你的确切需求并不实际,但TortoiseSVN有一个关于重命名的方便功能.你可以这样做:

  1. 使用IDE的重构功能重命名内容.
  2. 启动TortoiseSVN的"检查修改"对话框.
  3. 对于每个重命名的项目,您将看到两个条目:缺少"source.java"项和未版本化的"target.java"项.突出显示两者并从上下文菜单中选择"修复移动".

修复移动/重命名