我正在为之工作的公司正在启动,他们在此过程中更改了名称。所以我们仍然使用包名com.oldname,因为我们害怕打破文件更改历史记录,或者版本之间的祖先链接,或者我们可能破坏的任何东西(我不认为我使用正确的术语,但你得到了概念)。
我们使用:Eclipse,TortoiseSVN,Subversion
我发现somewhere我应该在很多步骤中执行此操作,以防止.svn文件夹的内容与java文件中的包名称之间出现不一致:
这对我来说似乎很好,但我需要知道祖先和历史以及其他一切是否仍然连贯并且运作良好。
我没有该服务器的密钥,这就是为什么我不急着备份东西并尝试一两件事。我想提出一个不这样做的理由,或者一种有效的方法。
感谢您的帮助,
微米。 Joanis
包重命名测试
步骤:
在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运行正常。
测试结果:
答案 0 :(得分:8)
也许这对你的确切需求并不实际,但TortoiseSVN有一个关于重命名的便利功能。你可以这样做:
答案 1 :(得分:3)
您是否考虑过使用Subclipse plugin?根据{{3}}
,它可以解决您的问题答案 2 :(得分:2)
如果你使用eclipse中包含的重构方法,你确定保持历史记录不起作用吗?
使用NetNeans,我会定期更改软件包名称,底层的“svn插件”将默默地移动内容(保存历史记录)到新目录中(之后将进行正常的重构)。
所以:如果历史记录与subversion插件一起保存,你是否已经在eclipse中尝试过? (例如,在新的签出副本中以避免失败)
至少你可以使用NetBeans来执行这个一次性任务......
答案 3 :(得分:0)
是的,它会起作用。您可以安装svn的命令行版本并编写一个将执行svn的批处理文件。自动化eclipse的东西会有点多工作,除非你已经熟悉eclipse API,否则可能不值得。
在你做所有事情之前用一个包测试它,以确保你正在做所有正确的步骤。
答案 4 :(得分:0)
你可以做到这一点,并不是那么难 - 获得一个干净的SVN历史记录的最好方法是分两步完成(可以成为一个提交) - 虽然为了获得好的结果我推荐使用CLI客户端。
然后您可以作为更改集提交,文件级别的历史记录应该匹配。
如果你正在使用Maven或包装工具,建议你在做这样的事情之前运行一个版本 - 如果你需要回到原来的结构,也应该在此之前立即剪标签
答案 5 :(得分:0)
我发现subclipse插件在提交已移动到新包(即尚未在源代码控制下)的类时提供错误消息“已经在版本控制下”,并且此包的父级是也是新的。
当发生这种情况时,我可以使用TortoiseSVN提交更改。之后我只需要在Eclipse中刷新项目。
将一个类移动到其父级已经处于源代码管理之下的新包之后,subclipse可以毫无问题地提交此更改。
答案 6 :(得分:0)
您可以执行此操作,而不是重命名包:
在项目中创建新的包结构。完成后,您的项目应如下所示:
com -
|- myOLDcompname -
| |- feature1 -
| |- classA.java
| |- classB.java
|- myNEWcompname -
|- feature1
在版本控制下添加新文件夹,以便svn可以跟踪它们