如何在不破坏 Subversion 历史的情况下重命名 Java 包?
2022-09-03 07:25:18
我工作的公司正在创业,他们在这个过程中改变了他们的名字。因此,我们仍然使用软件包名称com.oldname,因为我们害怕破坏文件更改历史记录,或版本之间的祖先链接,或者我们可以破坏的任何内容(我认为我使用的不是正确的术语,但你明白这个概念)。
我们使用:Eclipse,TortoiseSVN,Subversion
我发现我应该在很多步骤中做到这一点,以防止.svn文件夹的内容与java文件中的软件包名称之间不一致:
- 首先使用 TortoiseSVN 重命名目录,更新 .svn 目录。
- 然后,手动将目录重命名回原始名称。
- 最后使用 Eclipse 将包重命名(重构)回新名称,请更新 java 文件。
这对我来说似乎很好,但我需要知道祖先和历史以及其他一切是否仍然连贯且运作良好。
我没有那个服务器的密钥,这就是为什么我不会匆忙备份东西并尝试一两件事。我想提出一个很好的理由不这样做,或者一种有效的方法。
感谢您的帮助,
M. 乔安妮丝
包重命名测试
程序:
- 创建一个新的包 com.oldname.test.renametest.subpackage。
-
在 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(); } }
-
在 renametest.subpackage 下添加一个新类,其中包含:
class RenameTest1 { public RenameTest1() { showMessage(); RenameTest0.showMessage(); } public static void showMessage() { System.out.println("RenameTest1!"); } }
测试重命名测试 0 是否运行良好。
- 犯。
- 更改两个类的消息。
- 犯。
- 同样,更改一个类的消息并提交(只是创建一些历史记录)。
- 应用上面建议的过程(原始消息中的三个步骤)重命名包重命名test到testrename。
- 犯。
- 试运转。
- 再次修改消息并进行测试。
- 犯。
- 尝试在首次同时更改两条消息时回滚到版本。
- 如果到目前为止一切正常,它看起来不错,不是吗?
测试结果:
- 关于步骤9的注意事项:必须以相反的顺序进行(Eclipse重命名然后TortoiseSVN重命名),否则它变得复杂,因为TSVN创建了一个新的文件夹/包并标记旧的文件夹/包以进行删除...因此,您无法重命名 Eclipse,除非您同时将旧软件包放在其他位置以防止丢失 .svn 文件夹等。使用此方法进一步操作看起来不是一个好主意。(请注意:不要忘记勾选递归包重命名的复选框!
- 关于步骤 14 的注意事项:工作!我们可以看到以前的版本;我们所要做的就是告诉不要在复制/移动时中断,这没关系。一旦恢复到重命名之前的版本,包名称就不会恢复到好名称,也许再次重构它就可以了。
- 尾注:我很惊讶不得不以相反的顺序执行关键步骤。为了在第一个软件包重命名的中间尝试中做到这一点,我不得不回滚一些TSVN和手动修改,对此过程的确切结果的可重复性提出了一些疑问。我将不得不做第二个测试来确认它的有效性。总而言之:它看起来不错,但需要进一步测试。