注:内容来源为 尚硅谷 学院教学内容,侵删。
svn:版本控制器;
需求之一:备份!
需求之二:代码还原!
需求之三:协同修改!
需求之四:多版本项目文件管理!
需求之五:追溯问题代码的编写人和编写时间!
需求之六:权限控制!
Subversion;apache;版本控制器;
我们将每天的代码提交到公司的代码库(远程的svn仓库);
1、安装svn服务器;svn服务器负责保存所有项目的所有信息;
2、需要哪个项目从svn服务器下载下来;
-
-
SVN基本操作
-
①检出(checkout):将一个服务器端创建好的项目整个下载到本地,这是到项目组后参与开发的第一步,只需执行一次。
②更新(update):将本地文件更新为服务器端的最新版本,通常为每天上班时或修改公共文件之前执行一次。
③提交(commit):将本地修改提交到服务器端。通常每天下班前或每实现一个功能、完成一个模块时执行一次。
1、安装SVN;装在非中文无空格目录
2、配置环境变量;为了和任何地方都能直接运行svn命令;
将bin目录的放在环境变量下Path
3、配置版本库?
每一个项目最终都会有非常多的版本;我们应该有一个保存这些项目所有版本的地方:版本库!
存所有项目的地方;
D:\devsoft\SvnServer\repository:计划用来保存所有项目
我们应该将每一个项目所属的代码提交到自己的文件夹内;
1、每一个小文件夹认为是当前项目自己的版本库:
将一个普通的文件夹()变成一个svn认识的版本库;
1)、来到D:\devsoft\SvnServer\repository\BookStroe
2)、使用命令;变成一个版本库
svnadmin create D:\DevRepository\Subversion\StuSys |
3)、版本库的样子
conf:当前版本库的所有配置文件
db:实际上是保存项目的所有java文件等...实际上也是保存在svn自带的一个小数据库中,密文;
hooks:钩子程序;
locks:文件锁定
format;
只有版本库里面才能提交保存数据;
4、为了方便期间,我们应该将svn的启动做成一个随windows一起启动的服务;
1)、先尝试手动启动svn服务
svnserve -d -r 版本库的根目录(D:\devsoft\SvnServer\repository )
2)、看是否启动了
;来看是否有3690端口;
5、将svn启动做成系统服务;
只有管理员才能自己为系统创建服务
sc create MySVNServer binpath= "D:\develop\svn\bin\svnserve.exe --service -r D:\develop\svn\repository" depend= Tcpip start= auto
pause
三个位置:
1、服务名:MySVNService
2、svnserve.exe文件的位置
3、版本库的根目录
6、测试几个svn的命令;
1)、从服务器中检出项目;
svn checkout svn://SVN服务器主机地址/具体仓库目录 保存检出内容的目录
svn checkout 项目地址 保存到哪个目录的目录名
里面有一个.svn隐藏文件,不要删除;
2)、提交;
1)、第一次提交,有如下问题
2)、第一次需要将要提交的文件纳入版本控制;
svn add 文件名.后缀名
3)、纳入到版本控制里面的文件才能提交到服务器上 svn commit 又完蛋
提交的时候,必须有一个提交说明(日志信息);
4)、需要提交的时候,使用-m参数,随便指定一个提交日志;
5)、认证失败;(权限问题);需要来到版本库中来看;需要修改当前库中的权限,去conf文件夹,修改配置(svnserve.conf)
,表示未经授权的任何人都可以读写;
6)、给服务器上提交一个文件;svn commit -m "日志信息" 文件名
7、路径问题:
创建服务是-r指定的路径就是; svn://localhost/的路径
8、整个流程:
1)、新的员工;李四来了;第一步,要把整个项目先从服务器上下载下来;
svn checkout svn://localhost/CRM MyCRM
2)、老员工张三,修改了一个文件,修改以后需要提交
svn commit -m "老张修改了文件" hello.txt;
3)、李四,今天来上班;需要将要修改的文件更新;svn update;就会将项目中更新的东西下载下来;
4)、整个流程;
入职第一天,将项目检出----每天下班提交修改的内容-----每天上班第一件事先更新项目看有没有新增的东西;
9、Eclipse与SVN
1)、插件安装
1、将整个插件zip解压,将解压的整个文件夹;放在eclipse下的dropins
2、成功的标志
2)、分享&检出
1)、分享;将新创建的项目放到svn服务器;
如果是命令行;
1、创建一个文件 2、将其做成一个版本库 3、将整个项目先加入到版本控制中 4、提交
Eclipse:
1、项目上右键-Team-share Project
2)、先自己创建一个版本库,让svn能连接到这个版本库
svnadmin create D:\devsoft\SvnServer\repository\hellosvn-01
当前项目就保存在hellosvn-01版本库中;svn add 添加到版本控制的命令
3)、第一次也可能是认证失败,请先修改这个版本库的权限;Team-提交即可
4)、有新的修改没有提交(提交)
我们来提交
3)、检出
1、
2、连接到我们要检出的项目的svn地址
3)、一路next;
4)、我们每次进来,养成良好习惯,先更新看项目有没有修改;
5)、一个版本库中可以提交很多的项目
6)、如何查看这个版本库中都有哪些;svn资源库研究
使用资源库研究看当前资源库有什么东西
也可以在项目上右键检出为;来检出一个新的项目;
4)、冲突
1、使用编辑冲突
2、只是想对比一下
3、我们对比着,添加或者修改完代码以后;标记为已解决
生成的乱起八早的文件就没了
4、提交我们修改后的代码
5)、权限;
可以进行权限控制,让部分授权的人才能访问;
在每一个版本库中,都有一个conf文件夹,可以配置当前版本库的访问权限;
1、去svnserve.conf中修改
anon-access = none:匿名访问不允许
auth-access = write:授权访问,可以读写
password-db = passwd:密码文件保存在哪里(密码文件有用户名密码等);密码文件就是同目录下的passwd文件
authz-db = authz:授权文件就是同目录下authz文
2、在passwd文件中配置用户名密码
3、在authz文件中配置哪些用户可以访问哪些资源
[groups]:给passwd文件中指定的用户进行分组
[/] :[当前版本库下的所有资源]
leifengyang = rw leifengyang用户拥有读写权限
@devGroup = rw @是一个语法格式, 代表当前的组有读写权限
* = 除过上面指定的外,所有人没有任何权限
如果我们保存了密码,结果密码被管理员改了,eclipse不弹出输入密码对话框;
C:\Users\【用户目录】\AppData\Roaming;
将Roaming下的subversion文件夹清空即可
6)、时光机
项目要求:
1)、组长负责创建svn服务器和创建好版本库;
2)、并修改权限文件。只可以让组员有读写权限
3)、每个组给老师添加读写权限;用户名=lfy;密码=
注意:如果是在eclipse中切换账号,需要在工程目录下将原先保留的数据进行清除,这样才能在提交的时候重新输入新的用户。具体的方法是:到工程所在的文件夹下----右键----tortoseSVN----setting----saved data--- clear the 'Authentication data',以前的保存用户已经删除,这样,重新提交或者修改工程,输入自己的用户名,密码即可。