我工作的公司正在启动,他们在这个过程中更名了。所以我们仍然使用包名 com.oldname 因为我们害怕破坏文件更改历史,或者版本之间的祖先链接,或者我们可能破坏的任何东西(我不认为我使用了正确的术语,但你明白了这个概念)。
我们使用:Eclipse、TortoiseSVN、Subversion
我发现我应该在许多步骤中执行此操作,以防止 .svn 文件夹的内容和 java 文件中的包名称之间的不一致:
- 首先使用 TortoiseSVN 重命名目录,更新 .svn 目录。
- 然后,手动将目录重命名为原始名称。
- 最后使用 Eclipse 将包重命名(重构)回新名称,更新 java 文件。
这对我来说似乎很好,但我需要知道祖先和历史以及其他一切是否仍然连贯并运作良好。
我没有那台服务器的密钥,这就是为什么我不急于备份东西并尝试一两件事。我想提出一个不这样做的充分理由,或者一种可行的方法。
感谢您的帮助,
M·乔尼斯
包重命名测试
程序:
- 创建一个新包 com.oldname.test.renametest.subpackage。
在 renametest 下添加一个名为 RenameTest0.java 的新类,其中包含:
类重命名测试0 { 公共重命名测试0(){ 显示消息(); 新的重命名测试1(); } 公共静态无效showMessage(){ System.out.println("重命名测试0!"); } 公共静态无效主要(字符串[]参数){ 新的重命名测试0(); } }
在 renametest.subpackage 下添加一个新类,其中包含:
类重命名测试1 { 公共重命名测试1(){ 显示消息(); 重命名Test0.showMessage(); } 公共静态无效showMessage(){ System.out.println("重命名Test1!"); } }
测试 RenameTest0 运行良好。
- 犯罪。
- 更改两个类的消息。
- 犯罪。
- 再次,更改一个类的消息并提交(只是创建一些历史)。
- 应用上述程序(原始消息中的三个步骤)将包 renametest 重命名为 testrename。
- 犯罪。
- 测试运行。
- 再次修改消息并测试。
- 犯罪。
- 尝试回滚到第一次同时更改两条消息时的版本。
- 如果到目前为止一切正常,它看起来不错,不是吗?
测试结果:
- 第 9 步的注意事项:必须以相反的顺序进行(Eclipse 重命名 THEN TortoiseSVN 重命名。),否则它会变得复杂,因为 TSVN 创建一个新文件夹/包并将旧文件夹/包标记为删除......所以你不能为 Eclipse 重命名,除非您同时将旧包放在其他地方以防止丢失 .svn 文件夹等。用这种方法走得更远看起来不是一个好主意。(我自己注意:不要忘记勾选递归包重命名复选框!)
- 第 14 步的注意事项:工作!我们可以看到以前的版本;我们所要做的就是告诉不要在复制/移动时中断,这没关系。一旦恢复到重命名之前的版本,包名称虽然不会恢复到好名称,但可能再次重构它会做到这一点。
- 尾注:我很惊讶必须以相反的顺序执行关键步骤。为了在第一次包重命名尝试中做到这一点,我不得不回滚一些 TSVN 和手动修改,对这个过程的确切结果的可重复性产生了一点怀疑。我将不得不进行第二次测试以确认它的有效性。总结:看起来不错,但需要进一步测试。