代码管理平台svn, 安装与使用

常识

  • 版本控制,记录若干文件内容变化,以便将来查阅特定版本修订情况
  • 版本管理工具发展简史,cvs -> svn -> git 参考http://luckypoem14.github.io/test/2012/04/24/scm-history/
  • svn全称subversion,是一个开源版本控制系统,始于2000年
  • git是linux创始人linus发起的,2005年发布,最初目的是更好管理linux内核代码
  • git和svn不同在于git不需要依赖服务端就可以工作,即git是分布式的
  • 关于git和svn的比较大家参考http://blog.lishiming.net/?p=305
  • github是基于git的在线web页面代码托管平台,可以选择付费服务
  • gitlab可以认为是一个开源的github,两者没有直接关系

安装svn

  • yum install -y subversion 创建版本库
  • mkdir -p /data/svnroot/projects
  • svnadmin create /data/svnroot/projects #生成一些文件和目录;
  • cd !$/conf
  • #authz为权限配置文件,passwd为密码文件
  • vim authz//配置文件改为如下
[groups]
admins = tany,user1   #定义组;
[/]      #根目录,即/data/svnroot/projects
@admins = rw      # 组权限可写;
* = r     #其他人只读;user2不能在根目录上写;
[/user2]   #定义子目录,和权限;使用子目录的用户必须要用根目录的读权限;这样可以实现不同等级查看到不一样的内容;
tany = rw  
user2 = rw
* =      #其他用户没有权限,即user1是不能同步到user2目录(项目)的内容;
 vim passwd//加入如下内容  
[users]
tany = password   #定义密码;
user1 = password
user2 = password 

vim svnserver.conf//更改或增加如下内容  
[general]
anon-access = none   #匿名用户没有任何权限;
auth-access = write  #通过验证用户有写权限;
password-db = passwd  #密码记录在passwd文件;
authz-db = authz     #授权文件;
realm = /data/svnroot/projects   #目录定义;

[root@draft conf]# svnserve -d -r /data/svnroot #启动服务的命令;
[root@draft conf]# ps aux |grep svn
root       9073  0.0  0.0 180736   808 ?        Ss   11:06   0:00 svnserve -d -r /data/svnroot
root       9077  0.0  0.0 112728   972 pts/0    R+   11:07   0:00 grep --color=auto svn
[root@draft conf]# netstat -lntp |grep svn
tcp        0      0 0.0.0.0:3690            0.0.0.0:*               LISTEN      9073/svnserve 
  • 配置文件的所在路径位置跟配置文件的里设置目录相关
    把配置文件放到上层目录后,其作用域也会变化
    https://www.iteye.com/blog/elim-1171108

客户端上使用svn

  • yum install -y subversion #客户端安装工具;
  • svn checkout svn://192.168.87.149/projects --username=tany #在一台机器的当前目录下,同步到projects所有信息,(权限以内);如想在同样的路径下下载最新的版本,最好把原来的文件夹全部删除(备份以后),某些旧文件和本地文件会跟服务端的文件混在一起,文件名一样的不会更新;不存在的会更新下来,会比较麻烦;
  • cd myproject ;
  • ls -la
  • cp /etc/fstab . #增加一些内容,目录或文件,或者修改;
  • svn add * #修改后,把相应的文件添加到版本控制;已经添加过版本控制的文件,只需进行下一步commit自动会把改动上传;再次 添加, 提示错误;
  • svn commit -m “add file” //把文件上传到服务器,commit是实施,把改动上传,双引号内描述这次改动;成功后服务器的信息才变更,之后其他客户端可同步到此版本;
  • svn delete filename //在本地删除,跟add对应,把一个文件从版本控制里删除;
  • svn commit -m “delete filename” //在服务器上删除,实施删除操作,保存在服务器里;
  • svn update //把当前目录下的文件都更新到最新版 简写svn up;
  • svn log //查看变更日志,显示其他用户作出的改动;
[root@second projects]# cat /root/.subversion/auth/svn.simple/  #下有一个文件,明文保存用户的帐号和密码;最后登陆的帐号;

客户端上使用svn(windows)

  • 官网 https://tortoisesvn.net/index.zh.html
  • 下载TortoiseSVN 并安装
  • 简明教程 http://www.jianshu.com/p/6b3b7b915332
  • 跟linux里使用是一样的,命令方式变成点击菜单的方式;

subversion + ssh / ssl

  • http://www.linuxfly.org/post/450/

清除svn保存的username用户名和paasword密码(windows和linux)

  • https://blog.51cto.com/holy2010/645944

SVN命令使用详解

  • http://blog.sina.com.cn/s/blog_963453200101eiuq.html
    更多一些命令说明

利用svn钩子hooks/post-commit实现代码自动部署

  • http://coolnull.com/1716.html
    hooks功能有待研究
发布了125 篇原创文章 · 获赞 5 · 访问量 4612

猜你喜欢

转载自blog.csdn.net/tanyyinyu/article/details/103628785