我工作的公司正在成立,他们在此过程中更改了名称。所以我们仍然使用包名称 com.oldname 因为我们害怕破坏文件更改历史记录,或者版本之间的祖先链接,或者任何我们可能破坏的东西(我不认为我使用了正确的术语,但你明白了这个概念)。
我们使用:Eclipse、TortoiseSVN、Subversion
I found 某处 http://www.basilv.com/psd/blog/2006/my-experience-with-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!");
}
}
测试 RenameTest0 运行正常。
- Commit.
- 更改两个类的消息。
- Commit.
- 再次更改一个类的消息并提交(只是创建一些历史记录)。
- 应用上面建议的过程(原始消息中的三个步骤)将包 renametest 重命名为 testrename。
- Commit.
- 测试运行。
- 再次修改消息并测试。
- Commit.
- 尝试回滚到第一次同时更改两条消息时的版本。
- 如果到目前为止一切正常,看起来不错,不是吗?
测试结果:
- 第 9 步的注意事项:必须在相反的顺序(Eclipse 重命名,然后 TortoiseSVN 重命名。),否则事情会变得复杂,因为 TSVN 创建一个新的文件夹/包并将旧的文件夹/包标记为删除......所以你不能为 Eclipse 重命名,除非你将旧包放在其他地方同时防止丢失 .svn 文件夹等。进一步使用此方法看起来不是一个好主意。 (我自己注意:不要忘记勾选递归包重命名的复选框!)
- 第 14 步注意:成功!我们可以看到以前的版本;我们所要做的就是告诉不要在复制/移动时中断,就可以了。一旦恢复到重命名之前的版本,不过,包名称并没有恢复到原来的名称,也许再次重构就可以了。
- 尾注:令我惊讶的是必须以相反的顺序执行关键步骤。为了在第一次包重命名尝试中做到这一点,我不得不回滚一些 TSVN 和手动修改,这让我对这个过程的确切结果的可重复性产生了一些怀疑。我将不得不进行第二次测试以确认其有效性。总结一下:看起来不错,但还需要进一步测试。
也许它不适合您的具体需求,但 TortoiseSVN 有一个关于重命名的方便功能。你可以这样做:
- 使用 IDE 的重构功能来重命名内容。
- 从 TortoiseSVN 启动“检查修改”对话框。
- 对于每个重命名的项目,您将看到两个条目:缺少的“source.java”项目和未版本化的“target.java”项目。突出显示两者并从上下文菜单中选择“修复移动”。
修复移动/重命名 http://tortoisesvn.net/repairmoves.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)