【发布时间】:2011-01-29 23:10:41
【问题描述】:
我工作的公司正在启动,他们在此过程中更名了。所以我们仍然使用包名 com.oldname 因为我们害怕破坏文件更改历史,或者版本之间的祖先链接,或者我们可能破坏的任何东西(我不认为我使用了正确的术语,但你明白了这个概念)。
我们使用:Eclipse、TortoiseSVN、Subversion
我发现somewhere 我应该分多个步骤来防止 .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 创建一个新文件夹/包并标记旧文件夹/包删除...因此,除非您同时将旧包放在其他位置以防止丢失 .svn 文件夹等,否则您无法为 Eclipse 重命名。使用这种方法进一步发展看起来不是一个好主意。 (请注意:不要忘记勾选递归包重命名复选框!)
- 第 14 步注意事项:成功!我们可以看到以前的版本;我们所要做的就是告诉不要在复制/移动时中断,这没关系。一旦恢复到重命名之前的版本,包名并没有恢复到好名字,可能再次重构它就可以了。
- 结束说明:我很惊讶必须以相反的顺序执行关键步骤。为了在第一次包重命名尝试中做到这一点,我不得不回滚一些 TSVN 和手动修改,对这个过程的确切结果的可重复性产生了一点怀疑。我将不得不进行第二次测试以确认它的有效性。 总结:看起来不错,但需要进一步测试。
【问题讨论】:
-
不这样做的一个很好的理由是,这将是大量的工作(包括测试)而没有任何好处。如果您认为有人将开始在 com.oldname 空间中生成与您的库发生冲突的库,那可能是值得的,但域前缀的整个想法是为了保证唯一性,而不是为了满足营销人员。
-
我必须承认这是一个非常好的观点......
-
@Don Kirby & @Karussell:我会在今天或明天尝试运行测试,并在此处提供反馈。
-
刚刚添加了我昨天晚上做的第一个包重命名测试的过程+结果。
标签: java eclipse svn tortoisesvn renaming