服务器端是安装subversion这个软件包,apache出品!
这个也有Windows版本的!
先看下有没有安装
rpm -aq |grep subversion
没安装,我们再看下软件包有没有找到
yum list |grep subversion
找到了,好开始安装
yum install subversion -y
安装完成
!rpm
看下版本,可以看到是1.6.11
svnserve --version
查看下3690端口有没有监听,没有!!!
netstat -ant
启动一下服务,OK,监听到了
service svnserve status
netstat -ant
创建一个目录,存储所有SVN文件,我放在根目录/下
mkdir /svnroot
创建版本仓库,源码存放的地方,这里的源码可以是各种文件,比如我们公司还把工作计划什么的都放在里面,只是说可以多用途!!!我给它起名叫job
svnadmin create /svnroot/job
查看一下内容,它下面会生成很多文件,其中conf这个目录是放了三个配置文件
authz---权限管理
passwd---用户和密码
svnserve.conf是系统配置
passwd里面是
用户 = 密码
这样的格式
authz里可以创建组并设置目录的权限
passwd里我创建三个用户 ,密码666666
authz里在groups下面建两个组
admin,它的成员为kevin,我是指定它为管理员组
jobers,员工组,成员是steven和qingfeng
[/]这个是根目录,相当于/svnroot这个目录,但因为我们指定的版本仓库是在job下,所以这个就可有可无了!
[svnroot:/job]或者[job:/]都代表是/svnroot/job这个目录
让管理员组对它有读写权限
@admin = rw 组前面要加@号
job 目录下给kevin用户一个目录,qingfeng用户一个目录
[job:/kevin]表示kevin目录
job前面加个svnroot/应该也是可以的,我没试,原则上是可以的
权限是管理员组用户对它有读写权限,同时jobers里的steven用户也对它有读写权限
当然,上层目录管理员已经有权限了,下层目录就可以不用写,用户前面不要加@号
这里权限什么的一定要注意,不然不是连接不上就是谁失败!
启动服务测试一下service svnserve start
连接一下svn co svn://192.168.188.60/job或者svn co svn://127.1/job
没有发现源码仓库!
()内为命令简写.
checkout (co) 提取
commit (ci) 提交
update (up) 更新
list (ls) 列表
svn在linux下的命令可以用svn --help查看,比如svn add就是添加文件
用这种方法启动服务,
svnserve –d –r /svnroot/ job提示地址已经在用了,d是后台运行,r是指定根目录,这样指定后,对外面人来说就是隐藏了/svnroot/这个实际目录,对外面人来说访问只要用svn://IP(务器名)/job就可以了!
停止之前的服务,重新用这种方法启动服务,端口也监听了
重新连接,目录不存在!
重新指定目录,不要写job
svnserve –d –r /svnroot/
地址已经在用了
停止服务
查看一下svn进程
ps aux |grep svn
也可以lsof -i :80或者lsof -i :80|grep -v "PID"
找到目录是/svnroot/job的进程,PID是1680
kill 9 1680结束它
或者kill pid
或者killall 进程名
再启用服务,连接,OK了
svn co svn://192.168.188.60/job
可以指定用户和密码svn co –username kevin –password 666666 svn://127.1/job
但提示svnserve.conf:12:Option expected
去查看一下svnserve.conf,把里面
anon-access = read前面的#号去掉,后面的read改成none,不允许匿名用户查看,同时这一行前面不能有空格!!!
auth-access = write这一行前面的#也去掉,前面不要有空格
password-db = passwd
authz-db = authz
这两行前面的#号也去掉并不要有空格
realm =My First Repository 指定版本库的认证域,即在登录时提示的认证域名称。若你有多个版本库的认证域相同,建议使用相同的用户名口令数据文件,我这里就不动它,也没事!
重新连接,如果提示你invalid authz configuration,那你就好好看看authz里的权限配置
这里警告要缓存密码,只能以明文方式缓存,你就输入yes就行!如果不想看到这个提示就输入svn update --no-auth-cache
如果不加用户和密码,会让你先输入root用户的密码,再输入要连接的用户和密码
我们在Windows下安装客户端工具TortoiseSVN
安装很简单,安装完后右键就有了相关的选项
我们在客户机上新建一个文件夹,在它上面右键或在里面右键都行,先选择SVN Checkout,因为我们第一次使用,没有源码,所以在先从服务器上提取,哪怕服务器上也什么都没有!
输入库的地址,下面目录选择新建的那个,点OK!
输入用户名和密码,可以勾选下面的Save authentication来记住用户和密码,不然每次操作都要输入!
提取成功!
新建一个文本文件
这只是在本地新建了,服务器上还没有,所以要先添加一下
文本文件上的小图标也变成了+号
目录上多了一个感叹号
然后我们要提交一下,目录上或目录里面右键Commit
提交成功后文件上的图标就成了对号,目录当然也是!
来修改一下文件
再提交,可以写一下修改的备注
版本号成了2,因为第一次添加就认为你已经做了第一版
点Show log显示日志,我们能看到每一次的改变
再改一次
提交,版本号又加了一!
改第三次
版本号是4!
如果想查看以前的版本,可以右键,TortoiseSVN,Update torevision选择你要查看的版本
上面的方法只是将本地的工作回复到以前的状态,
而服务器端并没有回到以前的状态。
如果想让服务器上也回到以前的版本,要先更新一下本地的文件,执行Update命令更新到最新版本,然后右键,选择TortoiseSVN,Show Log,
弹出的窗口中会显示所有版本,选中最新的版本,按住Shift键,再单击你想回复到的版本+1的那个版本
比如最新版本是9,我们要回到版本2,那么就选中3到9所有的版本,然后在选中的版本上右键,选择“Revert changes from these revision”,再Yes,就可以了,注意,此时只是本地工作返回到目标你要的版本了,别忘记用Commit提交修改,但这样就意味着你后来所做的工作全没有了,要小心哦,脑子不要短路!
在记住用户和密码后,如果想用别的用户连接或要新建一个目录来连接别的内容,就先在清除记忆,在TortoiseSVN里有个Settings,进去后选择Saved Data,找到Authentication data,点后面的Clear!
然后在新建的目录或要更改用户的目录上Checkout,填写正确的URL并选择相应的本地目录
输入用户与密码
提示不存在,你要先确定你要提取的目录在服务器上已经存在!
查看源码仓库的方法有两种!第一种,随便找个地方右键,TortoiseSVN,Repo-browser
选择要浏览的目录
第二种就是直接输入你要浏览的目录svn://ip/目录
就打开了!这里的东西都是在服务器上存着!
如果没有目录就可以Create folder一个目录,比如添加一个用户的目录,以存放用户所做的工作计划等!然后客户机再Checkout!
如果想在这添加文件和目录都可以,add file,add folder,然后客户机update就行了!
接上面,输入目录名称
可以添加注释
添加成功
客户机提取
不能连接到源码库,无效的认证,都要看你的authz权限是否设置正确
下面这样设置就可以用kevin和steven用户读写kevin目录,用qingfeng用户就不行,因为它没有权限!
用别的用户就不行
新建一个目录给qingfeng,设置正确的权限
后面的图没截了,成功登陆!
如果遇到提示目录be locked!
先在目录里右键,TortoiseSVN,Clean up,然后再执行其他操作,如果不行,就出去到上级目录Clean up
还不行就先get lock,然后再release lock
最后还不行就进入服务器svn目录,del lock /q/s试试,不然删除目录看看!!!