常识
- 版本控制,记录若干文件内容变化,以便将来查阅特定版本修订情况
- 版本管理工具发展简史,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
[/]
@admins = rw
* = r
[/user2]
tany = rw
user2 = rw
* =
vim passwd//加入如下内容
[users]
tany = password
user1 = password
user2 = password
vim svnserver.conf//更改或增加如下内容
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = /data/svnroot/projects
[root@draft conf]
[root@draft conf]
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]
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]
客户端上使用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功能有待研究