想必大家现在都比较喜欢使用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上继续工作。

GOOD LUCK!

Svn正确的使用方法相关推荐

  1. 用javah 导出类的头文件, 常见的错误及正确的使用方法

    ******************************************************************************** 用javah 导出类的头文件, 常见的 ...

  2. 使用计算机的方式,电脑正确的使用方法

    电脑正确的使用方法 关机后不能马上开机,至少等待10秒钟以上才能开机.关机的时候一定要关闭所有的程序,在按照正常的数序关机.下面是jy135小编收集整理的电脑正确的使用方法,欢迎阅读. 电脑正确使用方 ...

  3. 软件测试作业1:正确理解原型方法对软件生命周期不同阶段的支持

    作业1 1.正确理解原型方法对软件生命周期不同阶段的支持,分别给出:辅助或代替分析阶段:辅助设计阶段:代替分析与设计阶段:代替分析.设计和实现阶段:代替全部开发阶段所对应的开发活动执行时间顺序. 答: ...

  4. python 暂停程序 等待用户输入_遇上Python程序暂停时,不要慌,教你正确的处理方法...

    今天为大家带来的内容是:遇上Python程序暂停时,不要慌,教你正确的处理方法! 文章内容主要介绍了Python程序暂停的实现代码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下,喜欢的记得点 ...

  5. linux关闭计算机的命令是,关闭Linux计算机的正确命令和方法

    你想知道关闭Linux计算机的正确命令和方法么?下面是小编为大家收集的关闭Linux计算机的正确命令和方法,希望能帮到大家. 关闭Linux计算机的正确命令和方法 shutdown -h now 立即 ...

  6. clocks_per_sec 时间不正确_壁挂炉不用了怎么关?壁挂炉正确的关闭方法

    天气火热,用壁挂炉取暖的用户也都很想了解怎么正确关掉暖气.用过壁挂炉的用户都知道,它不但能采暖,还能提供生活热水,在天气转暖的时候,有些只想单独关闭暖气功能,还有的是暖气和热水功能都不用了,那怎么来正 ...

  7. SVN Cleanup失败解决方法

    SVN Cleanup失败解决方法 炉石不传说 https://www.jianshu.com/p/c25c3451076e 使用svn的过程中经常会遇到update的过程中因为某些原因导致强行关闭s ...

  8. idea svn IP地址更换方法

    背景: 若IP地址更换后,IDEA中的svn没更换,IntelliJ IDEA 就会一直refreshing VCS history 原因:项目对应的svn ip地址变更了 或 svn url 连接失 ...

  9. 计算机的正确配置文件,显示器颜色配置文件在win10电脑中设置正确配置的方法...

    Windows10的电脑中我们需要正确的使用电脑的话,对于显示器还是有一定的要求的,那我们在电脑操作的时候,有小伙伴想要自定义设置显示器颜色配置文件,在相关的设置中不知道是怎么操作的,今天小编就来跟大 ...

最新文章

  1. vue vue-cli3 修改elementui的date-picker源码 引入node_modules里的element-ui后报错exports is not defined...
  2. 知道Google map上面街景怎么来的吗?-相当强大
  3. 使用C语言读取properties文件V1.0
  4. 安卓开发设置全屏隐藏标题栏
  5. mc服务器tps优化,LaggRemover——降低延迟/优化TPS/内存
  6. 广度优先搜索——好奇怪的游戏(洛谷 P1747)
  7. vant按需引入_VueCli2 配置Vant主题
  8. java 静态绑定_java的动态绑定和静态绑定
  9. python可以跨平台吗_python是跨平台的么
  10. 人人商城 / 数据库
  11. 读书 -- 偷偷暗时间之《暗时间》总结
  12. 织梦建站:织梦CMS整站源码通用安装教程(图文教程)
  13. 2021-09-10 网安实验-XCTF真题实战之密码学
  14. 用史上最牛学习法自学编程,不香吗?
  15. es6 class 跟普通function的区别
  16. 22端口限制 git_github ssh 22端口被禁用解决办法
  17. 上线客流人数统计系统实现资源的最大化利用
  18. Trac 经验谈之(2)杂谈篇补遗
  19. 深入解析Pancakeswap Prediction|博饼预测玩法
  20. 智慧人彩票软件 v9.6.2 高级版 怎么用

热门文章

  1. jedis远程连接linux报错
  2. PHP 设计模式六大原则
  3. pandas之数据结构
  4. JS魔法堂:彻底理解0.1 + 0.2 === 0.30000000000000004的背后 1
  5. Linux版本Membase无法写入default bucket的问题分析
  6. SharePoint中的富文本编辑器控件
  7. CSS3.0_选择器_学习笔记
  8. C#中GDI绘制高质量平滑图形实例
  9. C#的Winform多语言实现(resx文件)
  10. MFC获得当前应用程序目录的GetCurrentDirectory()和GetModuleFileName()函数