• SVN代码提交流程


    前言:

    经常从SVN上取最新代码下来后发现编译过不去,查找提交log找到之前提交的人,了解其提交代码的流程后,发现SVN代码提交流程有点问题. SVN代码提交虽然简单,但是如果没严格按照步骤来的话,很容易出错,出现代码覆盖,遗漏提交的情况。现在整理一个SVN提交代码流程的精简的版本。

    有2种方法,推荐方法1。

    方法1 通过本地SVN代码库中转提交:

    1。本地SVN代码库更新

    为了方便代码提交,建议本地维护一个与SVN对应的,只用来存放最新代码的本地SVN代码库(不做开发用)。其作用主要是用来在每次代码合并前,先从SVN上取最新代码。

    (代码更新完毕后,如果修改不多,合并时间不会太长,则可以把代码库锁定:代码库文件夹右键--TortoiseSVN--Get lock...;如果修改太多,合并时间比较长,建议不要锁库)

    2。合并本地开发库代码到本地SVN代码中

    本地开发库代码可能是我们在一个月前,半个月前与SVN同步过,但是现在可能不一样了。我们现在要做的,是把本地开发库中的代码合并到前面1中的那个SVN代码库中去。

    这里有一个非常重要的原则:合并代码的时候,我们只处理那些我们确认是我们自己新增的,修改的,删除的代码到本地SVN库中。任何不是我们做的修改,我们一律不要去动它。

     比如有一段代码我们我们开发的时候没有,但是现在本地SVN库里有,那我们不要去删除它,而是忽视它,因为它应该是其他人新增上来的。

    (说明:如果碰到修改冲突,这个不多,如果是遇到这个情况,应该考虑如何把我们的修改加入到最新代码上去)

    3。编译本地SVN库代码

    编译通过了才能提交到。这个可以防止提交遗漏,保证其他人从SVN上取下来的文件都可以编译通过。

    4。合并本地SVN代码到服务器SVN代码库中

    现在,我们本地SVN代码库中已经有了我们本地要提交的代码了。

    如果我们之前有锁库了,则可以直接就把代码提交上去了(提交时记得写上日志,以便后面修改调阅)。

    如果之前没锁库,这个时候还不能马上就提交了。因为这个时候可能其他人又提交代码了。所以,我们要先把这个代码与服务器SVN的代码再diff一下,以确保要提交的内容就是我们修改的内容。

    说明:如果发现有变动,则重复上面1,2,3,4操作。

    5。提交完毕

    如果有锁库,则要进行解锁。

    方法2 直接在开发库提交:

    1。直接更新本地开发库代码

    更新过程中,可能会发现不少提示冲突的。

    更新完毕,如果修改不多,像上面方法1的1一样,可以把库锁定。

    2。备份冲突

    逐一找出提示冲突的那些文件(比如test.cpp),ctrl+c,ctrl+V一下(多出个 复件 test.cpp来),把test.cpp删掉

    3。解决冲突

    等把所有有冲突的文件备份过后,重新更新所有代码,这时那些有冲突的文件都将回到目前最新的版本中。

    把备份的文件(复件 test.cpp)和目前最新文件test.cpp进行对比,把属于我们的修改的代码合并到test.cpp中去。当然,如果功能冲突,则要考虑我们的修该该做如何变动。

    如果仅仅是修改位置冲突,则挪下位置就可以了。

    4。编译代码

    编译有问题则要进行修改。

    5。提交代码

    如果之前有锁库,则可以填上日志,直接提交。

    如果没锁库,则在提交之前还要再diff一下,以确保要提交的内容都是我们自己修改的内容。

    PS: 如果中间又有人做修改,则重复1,2,3,4,5操作。

    6。提交完毕

    如果有锁库,则要进行解锁。

    方法1和方法2的比较:

    方法1 通过本地SVN代码库中转提交

    缺点: 浪费空间 

    优点: 比较安全。比如我们在进行提交到服务器SVN代码库中,如果操作失误(冲突合并错了),没关系,重新从本地开发库合并到本地SVN中再进行比较提交。

    方法2 直接在开发库提交

    缺点: 1)比较危险。因为我们是直接对本地开发库进行操作,万一在提交过程中发现错误了(比如冲突合并错了或代码删错了),则可能就没的恢复了。 2)不容易发现提交遗漏的情况.因为编译的时候,由于是代码都在本地,不容易发现代码提交遗漏

    优点: 提交比较快,不用通过中转

    所以推荐使用方法1。

    附注:一般,我们提交代码时,为了减少合并冲突,最好都在群里告知项目组其他同学我要提交代码了,这样别人可以有意避开

  • 相关阅读:
    Centos7安装部署openstack--Keystone认证服务
    Centos7安装部署openstack----基础服务安装
    Centos7 k8s dns
    集中式存储3apr
    Centos7 k8s部署dahsboard
    Centos7 k8s tomcat-app项目持久化
    Centos7 k8s 容器的网络访问service
    Centos 7 k8s Deployment新副本控制器
    模型层中模型的基本了解
    程序员必知必会Git的小知识
  • 原文地址:https://www.cnblogs.com/duanxz/p/2919015.html
Copyright © 2020-2023  润新知