在SVN分支中更改Java包名称

时间:2009-06-30 18:58:28

标签: java svn

我目前在package:

下的subversion中有一个java库
com.company.product.foo.*

不幸的是,我必须将其重构为:

com.othercompany.bar.*

那就像一次性一样好。但这必须仅在特定分支上执行。问题是将更改从trunk更改为具有完全不同名称的分支。

我看到的唯一解决方案是创建补丁文件,运行一些搜索&替换然后将其应用于分支。

还有更好的选择吗?

3 个答案:

答案 0 :(得分:2)

第一个最明显的解决方案是不使用公司名称作为软件包,而是使用商标名称或未来将使用的中性域名。

如果不可能(因为客户不希望将两个代码库视为连接),下一个最明显的解决方案是使用对概念更友好的源控制系统。 Git可能有更好的选择,或perforce

如果你必须坚持使用subversion,那么我会在源代码控制下使用中性软件包名称,然后让构建过程检查代码,移动代码,重命名软件包并编译,每个公司一次。或者,如果您的IDE可以理解它,请使用Java预处理器。

当然,最后一个只有两个客户都停留在同一个基础上才有效,但如果没有,那么客户就会拥有自己的分支,而构建过程只能根据正确的分支复制代码。

答案 1 :(得分:0)

我看不到任何真正好的解决方案,但只是在新的包名下创建子类是一种选择吗?

然后补丁可以应用于超类,子类实际上永远不会包含任何东西。

答案 2 :(得分:0)

具有重构功能的优秀IDE将能够立即处理此问题。完成更改后,将其提交给Subversion。它的一个优点是它以相同的方式处理目录和文件,因此您可以在重命名包时保留历史记录。

听起来你想为原作创建一个标签;检查并重构行李箱;提交更改。 Voila - 旧的和新的,在它们所属的行李箱上有重构的包裹。

也许我误解了你的问题,但我认为你不应该直接在Subversion中进行更改。更改代码,让Subversion完成它的工作。