SVN服务器端:
http://www.visualsvn.com/
客户端:
http://tortoisesvn.net/downloads
SVN解决了:
1.协同开发;2.远程开发;3.版本回退。
SVN工作原理:
1.首先SVN服务器端,安装在一个服务器上。
2.项目经理在服务端上,新建一个项目目录。
3.开发人员将服务端上项目的相关数据,下载到自己的开发机器中。第一次的相关操作,叫CheckOut,检出。
4.以后,开发人员要更新服务器的数据到本地的操作,叫Update,更新。
5.将本地的数据上传到服务器,叫Commit。
项目经理:
1.在SVN服务器上,建立一个项目目录;2.执行一次CheckOut操作,将项目初始数据下载到本地;3.针对项目,新建一些代码文件,定义好接口,或初始化文件,执行一次Commit操作。
程序员:
1.根据项目经理给得地址(形如svn://192.168.1.1/项目名),通过svn客户端,执行一次Checkout,建立与服务器相关连接以及下载相关数据。(如果以后还想更新服务器数据到本地,使用update)。
2.开发完一个功能后,使用Commit上交。
(来自传智播客)
第1步,只需要在客户端操作一次;2,3步,根据开发需要,可以执行多次。
服务器端软件安装VisualSVN-Server-x.x.x.msi
(来自传智播客)
服务器配置工作:
1.创建一个项目目录
- 首先在SVN服务上,添加一个公有的目录,例如FMOS作为项目目录。(可以存储多个项目)
- 在FMOS目录下,创建FMOS_WPF文件夹,作为FMOS_WPF的版本仓库。
- 直接去到SVN的安装目录下,添加FMOS文件夹,然后在FMOS目录下,在添加FMOS_WPF文件夹。
- 创建项目版本仓库。(可以在DOS环境下,执行svnadmin create D:/SVN/FMOS/FMOS_WPF),如果创建成功,会在FMOS_WPF下,产生一些目录。
- conf是项目的配置数据,db数据的存储目录,hooks开发过程使用同步复制,同步更新的配置,locks用于追踪用户。
2.进行服务端监管
svn://localhost或ip地址,访问到相关数据仓库。
在DOS下,执行:svnserve -d -r D:/svn/FMOS/FMOS_WPF(不要关闭DOS窗口,否则相当于关闭了服务,否则客户端无法checkout)
-d(后台运行) -r(监管目录)
那么,当在客户端输入svn://localhost或ip地址/FMOS_WPF就能访问到。
3.权限控制
默认情况下,SVN服务器是不允许匿名用户上传文件到服务器端的,所以必须更改相关配置。
在版本仓库下,conf中,authz(授权文件),hooks-env.tmpl(hooks模板文件),passwd(登录密码文件),svnserve.conf是核心配置文件。
有一行:anon-access =read(表示可以浏览,可以更新到本地,但是不能上传到服务器)
要删除前面#号,修改anon-access = write。
注意:在SVN中,是没有项目的概念,只有文件仓库的概念。如果我们有多个项目,那么要创建多个文件仓库。步骤:
1.创建一个总目录,例如:D:/SVN/Projects,用于放置多个文件仓库。
2.使用svnadmin create D:/SVN/Projects/project1 为项目1,创建一个文件仓库;使用svnadmin create D:/SVN/Projects/project2,为项目2,创建一个文件仓库。
3.使用svnserve -d -r D:/SVN/Projects,监管 D:/SVN/Projects下的所有文件仓库。
客户端软件安装
客户端安装完毕后,要重启电脑,否则SVN图标无法看到。
安装成功标志,就是在桌面右击,看到SVN的两个工具。
(如果安装了汉化包,可以桌面右击-TortoiseSVN-setting中设置语言)
新建项目时,对于项目经理:
服务器部分:
1.如果服务器中,有D:/svn/Projects目录,用于存放所有的文件仓库,那么,使用svnadmin create D:/SVN/Projects/project1 为项目1,创建一个文件仓库。
2.使用svnserve -d -r D:/SVN/Projects,监管 D:/SVN/Projects下的所有文件仓库。
项目经理本机部分:
1.在本地新建一个工作目录,然后,右键---检出(checkout,输入svn://服务器IP//project1),完成与服务的关联。(一般来说,全新的项目耗时很低,因为并没有文件上传过,只会在本地创建.svn文件夹(默认是隐藏的))。
2.在此工作目录下,使用IDE新建一些项目,或编写一些开发文档。
3.在此工作目录下,右击----提交,即可完成项目的v1.0版本的上传。
对于开发人员:
1.在本地新建一个工作目录,然后,右键---检出(checkout,输入svn://服务器IP//project1),完成与服务的关联。(如果是开发中途的话,会下载整个项目的文件,比较耗时;如果是全新的项目,那么仅能获得项目经理上传的v1.0全部文件,以及.svn文件夹)。
2.当日编写好的代码文件,右键提交(commit)即可。如果要上传整个项目中,修改过的文件,在工作目录下,右击上传即可。
3.次日,如果项目是多人开发的,那么要使用更新(Update)命令,将项目重新下载(其实仅仅下载更新与本机不一致的文件,由其他开发人员修改的文件),然后继续开发。
注意:在首次CheckOut的时候
常用图标:
忽略功能:
版本回退功能:版本递增上传是,仅保留增加和修改的部分。
版本回退办法:在工作目录下(即有.svn隐藏文件的目录下),右击---TortoiseSVN----更新至版本 即可。
版本冲突:
1.小强和旺财都共同开发Shop项目,在9:30开始,都Update自己的项目,然后开始开发。
2.小强和旺财都要修改index.php文件。
3.旺财9:30分修改完index.php文件,然后commit
4.小强10:30分修改完index.php文件,然后commit,此时,服务器面临着小强的修改后的index.php会压盖旺财在9:30粉上传的index.php。此时:
(估计是SVN自带算法,判断是冲突还是普通的commit,毕竟commit和冲突都是存在内容不一致)
然后,操作:
1.删除除了index.php以外的文件。
2.修改index.php文件。注意:
svn会在index.php文件中,注明旺财修改的内容;如果小强觉得没有冲突的话,就应该整合进去(按编程语法);否则应该删除。
3.最后commit。
在多人协同开发的项目中,对于版本冲突问题:
1.尽量避免多人开发同一程序文件。
2.如果一定要开发同一文件那么:
一. 沟通好开发时间,例如旺财开发完后commit这个文件,然后小强update这个文件,然后再开发,最后提交;
二.如果一定要在同一时间开发同一文件,那么避免开发同一个函数。
注意:在IDE中,添加新建每一个文件,都要找到对应目录,TortoiseSVN-增加。否则,是不能上传到服务器的。如果第二天更新本地,新建的文件将丢失。除非下载了IDE的SVN插件!!!
Vs的Svn插件: https://www.visualsvn.com/visualsvn/download/
重点:对于加入到SVN版本控制的文件,不能随便删除!!!!!要使用 右击---TortoiseSVN---删除来删除。
将文件放到其他目录的时候,也要先复制,然后删除,放到其他目录中,再添加到SVN中。
SVN添加账号秘密:
authz文件