石景山网站开发做图表网站
news/
2025/9/23 6:17:45/
文章来源:
石景山网站开发,做图表网站,做垂直行业网站利润分析,国内产品设计公司前十名先说说什么是branch。按照Subversion的说法#xff0c;一个branch是某个development line#xff08;通常是主线也即trunk#xff09;的一个拷贝#xff0c;见下图#xff1a; branch存在的意义在于#xff0c;在不干扰trunk的情况下#xff0c;和trunk并行开发#xf… 先说说什么是branch。按照Subversion的说法一个branch是某个development line通常是主线也即trunk的一个拷贝见下图 branch存在的意义在于在不干扰trunk的情况下和trunk并行开发待开发结束后合并回trunk中在branch和trunk各自开发的过程中他们都可以不断地提交自己的修改从而使得每次修改在repository中都有记录。 设想以下场景如果你的项目需要开发一个新功能而该功能可能会修改项目中的绝大多数文件而与此同时你的另一位同事正在进行bug fix如果你的新功能不在branch中开发而直接在trunk中开发那么你极有可能影响另一位同事的bug fix他/她在bug修复中可能会遇到各种各样的问题因为你的频繁提交代码引入了过多的不稳定因素。你可能会说那我在开发的过程中不提交不就行了 等到我全部开发结束我再提交是你可以这么做那还要版本控制干什么呢也许等到你最后提交代码的时候也许一周也许两周你会发现有一大堆 conflict等着你resolve。。。 那么正确的做法是什么使用branch从trunk创建branch然后在你的branch上开发开发完成后再合并到trunk中。 关于branch先讲到这里下面说说什么叫做合并。很好理解当branch开发完成后包括必要的测试将branch中的修改同步到trunk中这个过程有可能包括修改文件、增加文件、删除文件等等。 说到这里貌似本文差不多可以结束了不就是分支和合并么只要再简单地说说如何建立分支和如何合并就可以收尾了可能只需两个命令也可能只需鼠标点几 下然后键盘敲两下即可。其实事情远非这么简单爱动脑筋的同学可能会问了将branch的改动merge到trunk的时候和上文说的直接在 trunk中全部开发完然后提交有何区别你最后还不是要处理一大堆conflict 这个问题问得非常好其实这正是本文的重点branch和trunk在并行开发的过程中如何感知对方branch如何才能在开发过程中不会和 trunk越走越远导致最后无法合并试想一下如果在你开发branch的过程中trunk中的某个类文件已经被删除了这可能是另外一个家伙在另 一个branch上开发了两周后才合并到trunk的而你竟然在这个类文件上做了大量修改试问你到最后合并回trunk的时候该有多蛋疼解决这一 问题的唯一手段是branch要不停地和trunk保持同步你要及时地知道trunk都做了什么修改这些修改是否会影响你正在开发的新功能如果需 要你必须及时调整branch的代码使之能与trunk“兼容”。 那么如何让branch和trunk保持同步合并从trunk合并到branch你没听错是从trunk合并到branch。关于TortoiseSVN的合并有几点需要注意 TortoiseSVN的合并发生在本地也即你的working copy中你无需过多担心会对repository中的代码造成影响不管是从trunk合并到branch还是最终从branch合并回trunk在每次合并前最好先update然后将本地的修改先全部commit保护好现场万一合并不理想随时都可以revert合并完成后看是否能正确编译然后测试验证最后将合并后的改动提交到repository 下面我将step by step地演示如何一次完整的branching和merging包括创建分支、分支开发、分支和主线同步分支合并到主线的全过程甚至包括如何在本地创建一个测试用的repository。 首先需要安装TortoiseSVN我安装的版本是TortoiseSVN 1.6.15, Build 21041 - 32 Bit , 2011/03/23 18:00:27 1、本地Repository的创建 repository的创建很简单假设我要在D:\TortoiseSVN\TestRepository目录中创建repository只需右键 TestRepository目录依次选择TortoiseSVN - Create repository here便完成了repository的创建。 2、Check out 假设要check out到D:\TortoiseSVN\TestSVN同样很简单在D:\TortoiseSVN目录下创建TestSVN目录然后在该目录上右 键选择SVN Check out...在弹出的窗口中的URL of repository中填入file:///D:/TortoiseSVN/TestRepository其他默认即可最后点击ok。 3、trunk创建新项目MyProject 相当简单就不赘述了只列出本次操作所作出的修改 4、创建branch 在/trunk/MyProject目录上右键依次选择TortoiseSVN - Branch/tag...在弹出窗口的To URL中填入分支的地址在这里目标revision选择HEAD revision如下图所示添加log后点击ok分支便建立了。这个操作速度非常快新建的branch在repository中其实只是一个指向 trunk某个revision的软连接而已并没有真的复制文件。 5、Check out分支 右键TestSVN目录选择TortoiseSVN Update即可将刚刚建立的分支下载回本地。进入/branches/MyProject目录下你会发现其文件结构和/trunk/MyProject一模一样。 6、branch提交一个新文件 7、trunk紧接着提交一个修改 8、branch再次提交一个修改 9、将trunk中的修改同步到branch 6-8演示的是branch和trunk在独立、并行地开发。为了防止在“错误”的道路上越走越远现在branch意识到是时候和trunk来一次同步了将trunk合并到branch。 首先在本地trunk中先update一下有冲突的解决冲突保证trunk和repository已经完全同步然后在/branches /MyProject上右键依次选择TortoiseSVN - “Merge...”在弹出的窗口中选择第一项Merge a range of revision这个类型的Merge已经介绍得很清楚适用于将某个分支或主线上提交的多个revision间的变化合并到另外一个分支上。 点击next后出现如下窗口 由于是要从trunk合并到branch理所当然这里的URL to merge from应该填trunk的路径Revision range to merge很好理解就是你要将trunk的哪些revision所对应的变化合并到branch中可以是某一连串的revision比如 4-715-HEAD也可以是某个单独的revision号。由于在r4中trunk修改了Person.java中的talk()方法所以这里 的revision只需填4即可。点击next后出现下图 在这里只需保留默认设置即可。在点击Merge按钮前你可以先Test merge一把看成功与否以及merge的详细信息。点击Merge按钮后trunk所做的修改将同步到branch中。 10、提交合并后的branch 至此branch已经完全和trunk同步branch和trunk的代码相处很融洽没有任何冲突如果branch已经开发结束那是时候将branch合并回trunk了当然如果branch还要继续开发那你将不断地重复6-10这几个步骤。 11、将branch合并回trunk 在/trunk/MyProject上右键注意是在主线的目录上右键依次选择TortoiseSVN - Merge...在弹出的窗口中Merge type选择第二项Reintegrate a branch这种类型的合并适合在分支开发结束后将所有的改动合并回主线。 点击next后出现如下窗口 在这里From URL选择/branches/MyProject无需选择revision号Reintegrate会将branch上所有修改合并到 trunk。后面的步骤和上文第9步中的一样不再啰嗦了。如无意外branch将成功合并到trunk你需要做的只是将合并后的trunk赶紧 commit 12、提交合并后的trunk so easy... 13、删除branch 如果你认为你新加的功能已经开发完成了你可以删除你的分支 到这里我已经给你演示完了整个过程我一身的汗也下来了我想罢工了不过最后我们还是看看所有的log信息吧通过log能发现我们干的所有事情 r1-r7正是我上文在干的事情从Message中你能发现我对trunk和branch都干了什么另外在Log Messages窗口的左下角勾选了Include merged revisions你还能看到额外的Merge information 图中灰色的是和merge相关的log共发生了两次merge第一次是在r6在r6中branch合并了trunk在r4时提交的变化第二次是在r7在r7中trunk合并了branch从r2到r6的所有变化。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/911570.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!