22.1 代码管理平台介绍
现在的开发工作都是由团队合作来完成开发,通常都是团队中的每个人或者每几个人完成一个模块的开发,最后再将模块拼凑起来,形成一个完整的项目,这就涉及到了协同开发。在各个模块的开发过程中,肯定会因为出现BUG或者需求更改,而进行代码的修改甚至重构的,代码每修改一次就相当于迭代了一次版本,一个完整的项目中通常会有多个模块,如果每个模块的开发过程中都会修改或重构代码,那么如果没有一个平台来管理、控制这些代码,肯定会造成代码混乱的局面。所以这时候就有了一个概念:版本控制,代码管理平台的主要功能就是进行版本的控制,以及记录代码修改、版本迭代的历史信息。
- 版本控制,记录若干文件内容变化,以便将来查阅特定版本修订情况
- 版本管理工具发展简史,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,两者没有直接关系
22.2 安装svn
1、 yum install -y subversion 2、创建版本库 mkdir -p /data/svnroot/myproject #创建一个目录来存放项目的版本库 svnadmin create /data/svnroot/myproject #初始化,创建项目的版本库 [root@aming3 ~]# mkdir -p /data/svnroot/myproject [root@aming3 ~]# svnadmin create /data/svnroot/myproject [root@aming3 ~]# ls -la !$ ls -la /data/svnroot/myproject 总用量 8 drwxr-xr-x. 6 root root 86 8月 29 21:07 . drwxr-xr-x. 3 root root 23 8月 29 21:04 .. drwxr-xr-x. 2 root root 54 8月 29 21:07 conf drwxr-sr-x. 6 root root 233 8月 29 21:07 db -r--r--r--. 1 root root 2 8月 29 21:07 format drwxr-xr-x. 2 root root 231 8月 29 21:07 hooks drwxr-xr-x. 2 root root 41 8月 29 21:07 locks -rw-r--r--. 1 root root 229 8月 29 21:07 README.txt
3、进入目录查看相关文件 cd !$/conf #配置文件所在的目录 #authz为权限配置文件,passwd为密码文件,svnserve.conf为仓库配置文件 [root@aming3 ~]# cd !$/conf cd /data/svnroot/myproject/conf [root@aming3 conf]# ls authz passwd svnserve.conf
4、配置权限配置文件 vim authz//配置文件改为如下 [groups] admins = aming,user1 [/] @admins = rw *= r [myproject:/] user1 = rw [root@aming3 conf]# vim authz [groups] # 用户组 admins = user,user1 # 定义用户,可以定义多个 [/] # 根目录 @admins = rw # 设置该用户组的权限是可读可写 *= r # 设置所有的用户都可以读 # 可以指定对某个项目进行设置权限 #[myproject:/] #user1 = rw # 设置user1拥有可读可写权限
5、配置密码置文件 vim passwd//加入如下内容 [users] aming = aming_!(*$123 user1 = user1_^^^123 user2 = user2-***123
6、配置仓库配置文件 vim svnserver.conf//更改或增加如下内容 [general] anon-access = none auth-access = write password-db = passwd authz-db = authz realm = /data/svnroot/myproject [root@aming3 conf]# vim svnserve.conf [general] anon-access = none # 定义匿名用户的权限 auth-access = write # 定义用户的权限 password-db = passwd # 定义用户的密码文件 authz-db = authz # 定义用户的权限文件 realm = /data/svnroot/myproject # 定义对哪个项目生效
7、启动svn服务 svnserve -d -r /data/svnroot # -d指定后台启动,-r指定库所在的目录 [root@aming3 conf]# svnserve -d -r /data/svnroot [root@aming3 conf]# ps aux |grep svn root 3334 0.0 0.0 162200 652 ? Ss 22:28 0:00 svnserve -d -r /data/svnroot root 3336 0.0 0.0 112676 984 pts/0 S+ 22:28 0:00 grep --color=auto svn [root@aming3 conf]# netstat -lntp |grep svn tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 3334/svnserve
22.3 客户端上使用svn(linux)
- 客户端安装subversion:
yum install -y subversion
- 创建目录并连接服务端的myproject版本库(服务端需关闭防火墙)
[root@aming4 ~]# cd /home/ [root@aming4 home]# mkdir svntest [root@aming4 home]# cd svntest/ [root@aming4 svntest]# svn checkout svn://192.168.222.112/myproject --username=user1 认证领域: <svn://192.168.222.112:3690> /data/svnroot/myproject “user1”的密码: ----------------------------------------------------------------------- 注意! 你的密码,对于认证域: <svn://192.168.222.112:3690> /data/svnroot/myproject 只能明文保存在磁盘上! 如果可能的话,请考虑配置你的系统,让 Subversion 可以保存加密后的密码。请参阅文档以获得详细信息。 你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”, 来避免再次出现此警告。 ----------------------------------------------------------------------- 保存未加密的密码(yes/no)?y 取出版本 0。
- 进入版本库,上传文件到服务端;
[root@aming4 svntest]# cd myproject [root@aming4 myproject]# ll -a 总用量 0 drwxr-xr-x. 3 root root 18 8月 30 09:59 . drwxr-xr-x. 3 root root 23 8月 30 09:59 .. drwxr-xr-x. 4 root root 75 8月 30 09:59 .svn [root@aming4 myproject]# cp /etc/fstab . [root@aming4 myproject]# ls fstab [root@aming4 myproject]# svn add ./fstab # 添加到版本控制中心 A fstab [root@aming4 myproject]# svn commit -m "add fstab" # 把文件上传到服务器 正在增加 fstab 传输文件数据. 提交后的版本为 1。 [root@aming4 myproject]#
- 删除本地文件,删除服务端的文件,查看变更日志
[root@aming4 myproject]# svn delete fstab D fstab [root@aming4 myproject]# svn commit -m "delete fstap" 正在删除 fstab 提交后的版本为 2。 [root@aming4 myproject]# svn log
22.4 客户端上使用svn(windows)
-
下载TortoiseSVN 并安装,官网地址: https://tortoisesvn.net/index.zh.html
22.5/22.6 单机上使用git
- 安装:
yum install -y git