SVN的代码正确提交方法(转)

摘要:
让我们简要介绍一下我们在外事项目中使用SVN的经验。尚不清楚SVN使用了另一种源代码管理机制,而微软使用了一种传统机制。由于机制不同,提交方法也不同。然后执行下一步SVN-COMMIT以提交新代码。一种方法是使用SVN checkFORmodification。另一种方法是使用SVN showrog。

原文参考:http://blog.sina.com.cn/s/blog_5920510a010128ax.html

  想必大家现在都比较喜欢使用svn(subversion)完成代码管理了,因为它的开源,轻巧,易用。但是这样一个宝贝如果不知道其正确的用法,也会让我们百思不得其解,甚至耽误项目进度,浪费程序员的心血和结晶。
   下面就我们在外事项目中使用SVN的经验简单做个说明。
   如何正确提交代码?
   可能很多人用过微软的VISUAL SOURCESAFE 或者 Team Foundation Server,就认为那还不简单,checkout/checkin 不就完了吗。孰不知由于SVN采用了另一种源代码管理机制(merge模式),而微软采用的是传统的(lock/unlock)机制,由于机制不同,提交方式也不同。LOCK模式更适合小团队工作,谁修改,谁加锁,提交后解锁。MERGE模式却是谁都可以修改,而后提交时通过比较和合并解决分歧。所以,大家要按如下方式更新才能正确提交。
   常见情况是:假定项目名称是FAMS。
   (一) 用户张三CHECKOUT 了 FAMS的 revision 101,然后开始工作。
   (二)用户李四CHECKOUT 了 FAMS的 revision 101,然后开始工作。
   (三) 现在李四完成了工作,进行提交,SVN 版本号变为revision 102,一切OK.
   (四) 现在张三完成了工作,也要进行提交,由于其工作的基础版本(workingbase)是revision 101,这时SVN会提示版本已过期,需要先更新(svn-update).但这时真正的问题就来了:
    注意SVN的机制是提交时合并,如果它发现服务器上文件版本比本地文件版本新,它会自动把服务器上的文件更新到本地,如果这个文件李四从未改过,一切OK,更新就可以了。
    但是,如果李四也对此文件比如名字叫 fillform.java做了修改, 这又分三种情况:
     第一种情况:李四新增方法或内容,张三也是新增的内容,各不冲突,一切OK,SVN会自动合并。
     第二种情况:李四删除了部分代码,但服务器上此文件(张三提交的)此部分代码未动,而版本却比本地新,则SVN会自动把服务器上此文件内容合并到本地李四的版本中,注意啊:它把李四正确的删除工作给反复了,这就是SVN这种增量合并机制导致的最大问题。
    正确方法是: 首先拷贝此文件到另一个临时目录,比如D:TEMP,然后SVN-UPDATE此文件,第三步拷贝此文件回来,由于此时工作基础版本已更新至revision101,则可以正常对比,修改。最后提交即可。
    第三种情况:如果SVN-UPDATE时发生了冲突(conflict),会产生三个文件:
    一个是.mine 本地版本,
    一个是.r101,你的工作基准版本,
    一个是.r102,服务器端的最新版本。
    则手工修改冲突,然后先SVN-resolved, 注意这是告诉SVN你已经解决了冲突。然后执行下一步SVN-COMMIT即提交,就可以把新代码更新上去了
    怎么样?说的还够清楚吧?
    这时,有读者会问,一个文件这样可以,那整个项目怎么办呢?特别是我怎么知道哪些文件改了呢?别急,这个办法是有滴。
    一种方法是利用SVN-check FOR modification .
    另一种方法是利用 SVN-show log。 在弹出的项目版本列表上选择最新的版本(注意你的工作基础版本会用黑体列示出来)然后在右键菜单上选择 comparing working copy 就可以找到服务器上最新版本与你本地工作版本的所有不一致的文件了。然后对这些文件逐一处理,提交即可。

     最后,一点提醒:注意你的代码全部提交后,一般是用SVN-CHECKOUT 重新下载一个新版本进行工作,这样能确保代码最新,而不是在原WORKING COPY上继续工作。
 

免责声明:文章转载自《SVN的代码正确提交方法(转)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇goofys基本用法48 git使用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

(转)Unity内建图标列表

用法 Gizmos.DrawIcon(transform.position, "PointLight Gizmo"); UnityEditor.EditorGUIUtility.FindTexture("PointLight Gizmo"); Unity Editor Built-in Icons Icons what can load usingE...

SVN安装

Svn 搭建教程 一、首先准备三个软件: 1.VisualSVN-Server-3.8.1-x64(svn服务端) 2.TortoiseSVN-1.10.0.28176-x64-svn-1.10.0.msi(svn客户端) 3.LanguagePack_1.10.0.28176-x64-zh_CN.msi(TortoiseSVN 的汉化包) 软件下载路径...

SVN查看项目修改记录及修改内容

工具/原料 svn 一,查看修改记录 1 选择要查看的文件夹,打开之后在空白的地方右键。 2 选择svn里面的“查看日志”。show_Log 3 在弹出的日志框里,可以看到,你可以选择要查看的时间,以及修改的作者名,选择其中的一条记录,可以看到这个作者在这个时间点具体做了什么操作,是修改还是新增。   二,查看修改内容...

VS2008 集成SVN工具AnkhSvn介绍

版本控制器总是出问题,打算尝试下AnkhSVN,转个文章,免得忘记了。 AnkhSVN 最初是作为Visual Studio的一个插件出现的,通过它,你可以在Visual Studio中开发用SVN 版本控制的项目。这次所发布的2.0版 本完全重写了内核引擎。而对于Visual Studio 2005和2008来说,AnkhSVN是作为免费的源代码控制包交...

关于 svn: E155004 is already locked 出现原因和解决办法

1.出错提示: svn: E155004 is already locked,please clean up ......... 2.出错原因: SVN本地更新时,由于一些操作中断更新,如磁盘空间不够,用户取消。可能会造成本地文件被锁定的情况。 3.解决办法: 1)可以使用SVNcleanup来清除锁定。2)如果不是本目录锁定,系统提示上一层目录锁定,需要...

微服务部署(一)架构简介

简介金财项目是微服务构架,每个功能模块都是一个单独部署的服务,现有20个服务:AUTH、CUSTOMER、EHALL、CONFIG、EUREKA、GATEWAY、GATEWAY-UI、GENERATOR、JCCOLLEGE、NOTIFY、ORDER、PAY、PRODUCT、REPORT、SECURITY、SYSTEM、STORE、TASK、WECHAT、W...