初识SVN
备注:若有不正之处,请多谅解并欢迎批评指正。转载请标明链接:https://www.cnblogs.com/pmbb/p/11471430.html
SVN
需求:
1.为了数据的备份
2.代码还原
3.协同修改
4.多版本项目文件管理
5.追溯问题代码的编写人和编写时间
6.权限控制
解决方法:版本控制
Subversion是一款版本控制的工具软件,通常也称为版本控制器,简称SVN。
安装SVN
创建版本库
--先进入到你项目要保存的目录
--然后 svnadmin create 目录名
文件目录结构:
conf --当前版本的配置文件(设置文件权限的时候用到这个conf)
db --数据库保存的地方
hooks --钩子程序(像sql里的触发器)
locks --跟文件的锁定有关
format
README.txt
启动服务器
netstat -am 查看监听的端口号(看3306后边3690)
不能关闭命令提示符窗口(因为关闭也代表着服务也关闭了)
有一种方法可以解决
注册windows服务(让它随着系统的启动自己启动)
也是在命令提示符窗口里边
sc create SVNService binpath= “svn的可执行文件路径 --service -r 版本库的路径” start= auto depend= Tcpip
条件:以管理员身份运行命令提示符窗口
看启没启动 启动了说明命令没打错。如果没启动成功,检查一下引号里的命令有没有写错
命令行(客户端)
在SVN工作空间找到具体的工作文件
svn checkout svn://localhost/项目名 (多仓库的需要项目名 单仓库的不用)
现在你的工作文件中就有了“项目名”这个文件夹了,假设在里面写了一个TXT
然后使用提交命令
先进入项目名这个目录底下
svn add 项目名.文件扩展名 (先加入到版本里)
svn commit -m “提交说明” 项目名.文件扩展名
条件:先到服务端的具体项目下的conf里的svnserve.conf 打开
看到
# anon-access = read (anon是匿名单词的前四个字母)
# auth-access =write(auth是权限的前四个字母)
然后把第一个改成anon-access = write
=====================
来到另一个 进行检出
先来到工作目录
svn checkout svn://localhost/项目名
进行文件修改后
先进入项目名这个目录底下
svn commit -m “提交说明” 项目名.文件扩展名
//文件更新
svn update 所要更新的文件名
Eclipse插件安装
安装好的插件会在Team下展示
把下载好的插件文件解压好放到eclipse下的dropins文件夹下即可
Eclipse需重启一下
还可以在help 里 的eclipse markeplace... 里在线装
Eclipse分享和检出
创建好的项目 右键点Team 选择share project 选svn 下一步 选中创建新的资源库位置(c)
下一步 输入地址 如:svn://localhost/OA 再点击下一步 finish
切换到同步视图 选择项目 右键选择提交 上面空着的是写日志的地方 点击OK
如果想看一下服务器端svn下有什么
我们可以打开透视图。Open perspective 选中svn资源库研究
如果创建的项目是动态web项目会有点不一样 build文件夹没有
项目右下角有小圆柱的代表添加进去了,但build没有 build文件夹里装的是编译后的class文件 编译会有些出入,所以不把build放入
检出:
右键 点 import 选择svn 下的从svn检出项目 点击下一步 默认选中的是创建 点击下一步 输入地址 如:svn://localhost/OA (localhost具体看情况)下一步 选中具体项目名称 下一步 下一步 finish
可以看到检出的项目中build文件右下角是一个蓝色的问号 表示:没有纳入版本控制的目录
选中build 右键 Team 选中添加至svn:ignore(D) 点OK 然后可以看到build文件没有符号了,说明build文件已经没有参加版本库的管理了
项目右下角是一个黑色的星号 代表:该项目下有没提交的一些文件
如果要提交的话,右键点Team 点击提交(c)... 提交后会变成一个金色的圆筒
更新提交
改了文件的东西 文件右下角会有一个黑色的星的图标
Team 下点更新 能拿到刚更改的数据
如果新建了一个Java文件 点Team (选中添加至版本控制(A) 可直接提交)点击提交
仓库分析
在svn同步视图中
右键 新建 资源库位置 URL:svn://localhost/OA (我们来研究一下URL)
然后打开计算机属性里的服务 找到svn的服务 查看属性 里面有一个可执行文件的路径:
我们可以看到这是svn仓库的位置
URL地址必须指向一个带有conf/db/.../这些目录的文件夹的目录
冲突
一个人在第5行改了代码 提交了
另一个人也在第5行做了修改 (事先没获取直接修改)然后提交 会报错说文件过时了
必须先更新一下
如果没有修改的同一个地方是可以提交的
在冲突的文件点右键 Team 有一个编辑冲突 编辑完后保存
选择刚刚的冲突文件点右键 选择标记为解决 点击OK
然后文件右下角有黑色星号(代表与服务器文件对比有更改)
这个时候提交就可以了
权限
在服务器下的具体文件下的svnserve.conf 打开编辑器
打开 auth-access=write
password-db=passwd 我用那个文件来保存我用户名密码的信息
authz-db=authz 表示用authz 这个文件来保存授权的信息
然后打开conf文件夹下的passwd
写入 如:
tom = 123456
jerry = 123456
ceshi = 123456
然后打开authz 去设置具体的权限
我们可以看到[groups] --分组的意思
kaifa = tom,jerry
[/foo/bar] 表示:给根目录下的某一个目录分配权限
[/]
@kaifa = rw @可以让它知道这是一个组不是人
ceshi =r
* = 表示:起到一个屏蔽的作用,除了上面设置的这些,其他的什么用户都什么权限也没有
然后提交的时候会弹出提示框。输入用户名 和密码
在文件夹后面就可以看到是哪个用户提交的了
时光机(代码还原)
比如:选中需要的Java文件 右键 Team 选择显示资源历史记录(H)
此时会报错
解决办法 来到服务器上的具体项目文件夹下的conf中的svnserve.conf文件 将# anon-access=read改为anon-access =none
这个时候就可以了。
如果想变成以前的版本 直接选中右键 选中获取内容即可 然后提交
TortoiseSvn
除了eclipse插件 还有一个独立的SVN 叫做TortoiseSvn