我有
www.example.com上的/ var / www / cool_codebase我有
www.example.net上的/ var / www / cool_codebase
代码库适用于在不同服务器上运行的同一个Web应用程序。代码库之间存在一些特化(特定于客户端的位和bobs等) - 但不是太多。一个代码库具有另一个不具有的文件,反之亦然。有些编程也不同。
我已将每个代码库下载到我的localhost,我的问题是:
如何将这两个文件夹合并到一个文件夹中,然后将其作为一个“统一代码库”提交到我的SVN中?
我应该将每个代码库放入自己的SVN存储库中,然后合并这些单独的存储库吗?或者我可以在 SVN之前合并代码库 - 例如使用一些linux命令 - 然后然后将其提交给SVN?
非常感谢任何想法或帮助。
我应该补充一点,最终结果将是一个“大型统一代码库”,我们可以将其部署到www.example.com和www.example.net,而不会出现任何问题。
(PS。是的,我意识到无论我做什么,我都要编辑一些文件并使编程“通用”等等。我不介意这一点。我只是在寻找方法使整个事物自动化或半自动化。)
答案 0 :(得分:2)
在将它们提交到svn之后合并代码库的优势在于您之后可以访问其历史记录:您将能够看到代码的哪些部分来自“.com”版本,来自“.net”,以及在将两者结合的过程中所做的更改。
一种方法:
svn cp svn://repo/trunk svn://repo/branches/net
svn add
和remove
,以便分支包含.net版本。承诺。svn merge ^/branches/net .
svn diff
的输出,并编辑中继结帐,使其成为您统一的大型代码库。第5步的难度将在很大程度上取决于具体的代码库。
如果您碰巧访问了较旧的“共同祖先”版本(从中导出了两个代码库),那么您应该在步骤1中检查该版本,然后检入“.com”版本这使得svn在步骤5中执行自动“三向合并”,这可能会为您节省大量的手动工作。
无论您采用何种方式,都需要手动编辑文件。使用良好的交互式合并工具(例如meld)可以更加轻松,这也是上面第5步的普通svn diff
的一个很好的替代方案。
请注意,meld能够a)比较整个目录树,b)一次比较和编辑三个版本。因此,您可以将其指向包含“.com”代码的目录,其中一个包含“.net”代码,并且您的工作目录可以并排查看所有三个版本。