思维导图:
主要从五个方面来学习SVN,最重要的还是操作这一块:
1.是什么
百度百科:是一个开放的版本源代码控制系统
自己的理解:SVN是一个从零到无限大的服务器,只要获得权限后就可以上传资源和从里面下载资源,并可以对每一个操作进行一个记录放到日志里成为一个版本,这样在开发时及时不在一起也能及时获得开发资料进行整合,工作原理如图:
2.优点
谈到优点就要说为什么要用SVN?
SVN如果要用三个词来进行总结的话:备份,开源节流,版本控制。我们在团队开发过程中备份工作档案是重要的,物理备份难免被破坏;版本空管很重要,每一版的用处在不同时期会有不同的作用,只有随时能够找到任何开发过得一版才是高效的;伙伴间的数据同步重要,一个程序的开发由不同人负责不同的版块,只有及时传送和获得数据才能保证程序的快速完成;而SVN的优点便恰恰满足了这几条:
1)SVN是原子操作,即只有操作完全正确结束后才会更新,避免了一些逻辑上的错误
2)建立repository后便可以进行commit和checkout操作,备份与获取十分快捷简便
3)有良好的版本记录机制,可以在日志中找到自己想要的每一个版本
4)同步机制,方便了多人开发合作
3.管理规范
1)一般trunk为主开发目录,branches为分支开发目录,tags为tag存档目录(不允许修改)
2)Trunk存放最新的代码即即将发行的版本的代码,保证处于“开发模式”
3)Branches包含了trunk在不同发展阶段的副本,即在主版本中有一个bug或者功能要进行修改时在此建一个副本最后在合并到trunk中,这样便不会影响主版笨的运行
主要有三个分支:Release Branches,Bug fix Branches,Experimental Branches
Release Branches:对发行的版本进行备份以备不时之需
Bug fix Branches:主要在此修复发现的重大bug,这样不会影响到trunk的进行
Experimental Branches:想将新技术引进项目可以现在这个上面进行实验——TRY
Tags标签就像分支一样备份你的代码,只能是只读状态,是为了恢复记录下的某个特定时期的版本状态
4)使用时的一些小规范:先更新在提交;多提交名标注;每次的版本要管理好
4.基本操作
https://yunpan.cn/cYJa26Yx2zTru 访问密码 0e2d ,上面的基本操作在这里面有比较详细地教程,主要想说的是冲突和制作tag与release
1)冲突
为什么会引起冲突
当开发人员A和开发人员B从版本库同时检出文档1.txt,而A和B同时修改了1.txt的同一地方,后提交的一方会在拷贝副本中产生冲突。
如何避免冲突
1>将编译性的文件排除在提交之外
就是obj文件夹和bin文件夹,一个是用来保存每个模块的编译结果,一个是用来保存项目生成后程序及
2>将属于每个用户的文件排除在提交之外
*.csproj.user是一个XML文件,用于存储当前项目的用户配置;*.suo记录所有将与解决方案建立关联的选项
3>上述两个避免提交的简单粗暴的方法就是设置此类型文件不能提交,如图:
4>每次提交前都进行一次dateup看看有没有修改后的最新版本
冲突后如何做
编辑冲突,找到冲突文件进入编辑页面
修改冲突,这个要两个人商量着来
保存修改
还原
解决
2>访问服务器
一种情况是在局域网中即独立服务器:
只需要在checkout的时候换成对方的ip和Repository下的文件夹就可以了,so easy
一种情况是外网访问数据库:
这一个没有弄懂,附上参考资料:http://www.nat123.com/Pages_8_263.jsp
3>制作tags或release
release的制作与tag完全相同,只是tag的目录变成release。到这我们会发现我们虽然给目录起了不同的名字,更多的只是为了我们在操作时的简便,SVN并不会去区分这个,只是我们内部约定俗称的
安装时注意事项:
http://blog.163.com/crazy20070501@126/blog/static/1286594652013926105231772/
其他:
SVN服务端介绍
有待解决的问题:在客户端不能直接 create resipteory here
有待认识区域,就是客户端的setting区域