ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

linux – 如何将两个单独但相似的代码库合并为一个SVN代表?

2019-07-05 02:51:00  阅读:252  来源: 互联网

标签:linux svn merge generics codebase


我有

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.是的,我意识到无论我做什么,我都要编辑一些文件并使编程“通用”等等.我不介意这一点.我只是想找到自动化或半自动化的方法 – 完成整个事情.)

解决方法:

在将它们提交给svn之后合并代码库有一个优点,即您之后可以访问它们的历史记录:您将能够看到代码的哪些部分来自“.com”版本,来自“.net”,以及在两者结合的过程中做了哪些改变.

一种方法:

>将“.com”代码库导入新的存储库作为trunk.
>从该主干创建一个分支:svn cp svn:// repo / trunk svn:// repo / branches / net
>检查分支,复制“.net”代码,根据需要执行svn添加和删除,以便分支包含.net版本.承诺.
>查看trunk和svn merge ^ / branches / net.
>非常仔细地检查svn diff的输出,并编辑trunk checkout,使其成为您统一的大型代码库.

第5步的难度将在很大程度上取决于具体的代码库.

如果您碰巧访问了较旧的“共同祖先”版本,从中导出了两个代码库,那么您应该在步骤1中检查该版本,然后检查“.com”版本到主干在第4步之前,这使得svn能够在步骤5进行自动“三向合并”,这可能会为您节省大量的手动工作.

无论您采用何种方式,都需要对文件进行一些手动编辑.使用良好的交互式合并工具(例如meld)可以更加轻松,这也是上面第5步的普通svn diff的一个很好的替代方案.

请注意,meld能够a)比较整个目录树,b)一次比较和编辑三个版本.因此,您可以将其指向包含“.com”代码的目录,其中一个包含“.net”代码,以及您的工作目录,以便并排查看所有三个版本.

标签:linux,svn,merge,generics,codebase
来源: https://codeday.me/bug/20190705/1383255.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有