使用SVN提交工程需要注意和遵循的事项

本文分享了在使用SVN进行版本控制时的一些实用技巧和注意事项,包括如何避免提交不必要的文件、解决冲突的方法、虚拟机环境下SVN的高效使用方式等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



    现在工作中几乎离不开SVN进行版本控制,但是公司来的新同事老犯些基本的错误或者用不好,今天忍不住写了这个“使用SVN的注意事项”(部分内容是针对linux工程管理的),希望对大家有所帮助。有不对或者不好的地方,恳请大虾不吝赐教

 

1.       linux工程中需要Makefile,但是提交工程时,除了Makefile.am外,最好不要提交任何Makefile开头的文件,因为那些是由./init.sh和./configure动态生成的,不同的./configure配置会导致生成的这些文件不一样。
一个更简洁的观点是,只要动态生成的东西都不要提交。那样SVN库更简洁,而且提交的文件都是有效的(因为都是人为创建的),不要提一堆垃圾上去,看着都烦,每次一更新,发现N个修改的感叹号标志,结果都是别人机器上自动生成的文件和自己机器上生成的文件不一样导致的,唉。

2.       每次提交前先更新,这样能在提交前发现是否和别人的冲突;
如果冲突,检查文件,进行协商修改;
注意看更新时显示的列表,有些冲突的地方,SVN会自动进行合并,也要检查这些合并的文件,避免SVN合并错误导致代码有错

3.       如果使用linux虚拟机开发工程,最好使用samba映射网络驱动器,然后在网络驱动器中建立文件夹进行checkout,并在右键菜单中的SVN设置中->外观与样式->图标叠加中,勾选“网络磁盘”,这样可以在映射的网络驱动器中使用SVN的图标,便于使用。
千万不要在本地磁盘进行checkout然后拖动到虚拟机中,这样会丧失SVN提供的自动识别修改文件并勾选提交的功能(如果没有这个功能,你就得为东改西改改得晕头转向最后不知道要提交哪些文件而烦恼了,最后导致来个“暴力提交”(我发明的词语哦):就是删除SVN服务器对应工程的所有文件,再提交自己本地的,可怕吧?!),也不能使用SVN的图标标识功能。

4.       在工程开发中,有些同事喜欢用SVN的锁定功能,我觉得其实基本没有必要用锁定的功能。我认为锁定的功能是为了懒人提供的(呵呵,调侃一哈J),因为他们不想去解决可能不断出现的冲突问题;但是你想,你锁定了别人怎么办?每次都要你解锁,到时还是有冲突!
其实在我参加的一个开发组中,大家都没用锁定,而且是20多万行的代码,7百多个文件,几乎没发现很恼火的冲突J这不关乎运气的原因,是因为都有良好的SVN使用习惯

    还有一个基本的观点:确保你的模块或者工程编译正确后再checkin,这个道理不言自明(可有些人就是要弄错L)。

[本地工作区] :work copy ,本地工作副本; [主项目]:引用共用模块的新项目(工程) 最新版本(HEAD revision):版本库里文件或目录的最新版本 SA :SVN服务器的管理员 PRA :单个项目库的管理员,或者是项目负责人 User :普通工作人员 WC :work copy ,本地工作副本 1. 版本控制原则 SVN(或者其他版本控制软件)只是一个版本控制的辅助工具,不可能把所有的问题都自动解决掉。尤其,对于冲突这个麻烦事儿,项目成员在项目进程中要尽量通过优化流程来解决,而不是将希望寄托于软件工具来自动解决一切问题。 建议的开发过程组织: 1. 随行就市 项目刚开始阶段,单独开发;项目稳定阶段,完整开发。项目开发初期,各个项目成员负责自己的文件夹(或者模块),与SVN服务器间的更新、提交等操作只需要针对自己负责的文件夹(或者模块)就行了,他人的文件夹(或者模块)可以不必关心;项目稳定阶段,也就是每天的变更量很小了,所有项目成员与SVN服务器的更新、提交等操作需要针对项目的所有文件夹(或者模块),各个项目成员在其本地编译时本地工作区的全部项目程序(或者资料)均为最新的版本,保证项目作为整体能够顺利运行。 2. 能躲就躲 尽量保证一份文件只有一个项目成员在编辑。举例说明:程序员A负责底层中文件 DBAccess.cs的编写,如果程序员B的工作要求他为DBAccess.cs增加两个方法,程序员B应该通知程序员A来增加而不是自己增加;如果此时A非常繁忙需要B自己增加,就需要B先更新本地的DBAccess.cs,然后开始修改,修改完成后立即提交并通知A更新本地的文件,通过缩短提交间隔来减少冲突。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值