1、代码管理平台介绍html
版本控制,记录若干文件内容的变化,以便未来查阅特定版本修订状况git
版本管理工具发展简史,CVS→SVN→Gitgithub
CVS:兼容性不太好。web
SVN:太慢。全名:Subversion,是一个开源版本控制系统,始于2000年。数据库
Git:Linux创始人linus发起的,2005年发布,最初目的是更好的管理Linux内核代码。vim
Git和SVN不一样在于Git不须要依赖服务端就能够工做,即Git是分布式的。windows
关于Git和SVN的比较,参考http://blog.lishiming.net/?p=305安全
SVN和Git的最主要的差别——分布式。bash
SVN优点:服务器
1.存储
SVN服务器既具备CVS所具备数据储存的优势,数据通常不会丢失,同时又拥有本身的特点。SVN是经过关系数据库及二进制的存储方式,同时解决了既往不能同时读写同一文件等问题,同时增添了本身特有的“零或一”原则。
2.速度
与初始的CVS相比,SVN在速度运行方面有很大提高。由于SVN服务器只支持少许的信息、资源传输,与其余系统相比,更支持的是离线模式,所以避免了网络拥挤现象的出现。
3.安全性
SVN是一种技术性更加安全的产品,实现了系统和控制两方面的结合。一方面能够将系统总体的安全功能有效地分布在分支系统中,进而保证分支系统能正常运行,从而使各分支系统可以互补,最终在系统总体性的安全性得以保障,经过均衡原则实现最终追求安全的目的。
Git优劣势:
优势:
适合分布式开发,强调个体。
公共服务器压力和数据量都不会太大。
速度快、灵活。
任意两个开发者之间能够很容易的解决冲突。
离线工做。
缺点:
资料少(起码中文资料不多)。
学习周期相对而言比较长。
不符合常规思惟。
代码保密性差,一旦开发者把整个库克隆下来就能够彻底公开全部代码和版本信息。
GitHub是基于Git的在线web页面代码托管平台,能够选择付费服务。
Gitlab能够认为是一个开源的GitHub,二者没有直接联系。
一句话区分,git是管理工具,github是在线的基于git的平台(或者叫作服务)。gitlab和github同样,也是一个基于git的提供web界面的代码管理平台。
2、安装SVN
# yum install -y subversion
建立版本库
# mkdir -p /data/svnroot/myproject //该目录路径可自定义
# svnadmin create /data/svnroot/myproject //在这个目录下初始化一些文件
# cd !$/conf #authz为权限配置文件,passwd为密码文件,svnserve.conf为SVN仓库的配置文件。
# vim authz //配置文件新增内容以下: [groups] admins = aming,user1 //加到用户组的下面 [/] @admins = rw //@后面跟组名 * = r //除了admins组之外的全部人只有只读的权限。 [myproject:/] user1 = rw # myproject指项目名,这种用法适合于/data/svnroot/有多个项目的状况下,这只是其中一个项目而已。 # 带冒号指的是一个项目名,这里只有一个项目,能够在这下面建立子目录dir1,dir2。能够写成[/dir1]、[/dir2]的形式。 # 两种不一样的形式表达而已。一种是[/dir1]、一种是[myproject:/],一个意思。由于这里只有一个项目。
aliases:别名
groups:用户组
[/]:指的是/data/svnroot/myproject这个目录。
仓库里面的目录或者项目里面的目录,针对这些项目配置的关于用户和组的读写权限:
[/foo/bar]
[repository:/baz/fuz]
# vim passwd //[users]下新增 [users] aming = aming_!(*$123 ##左边是用户,右边是密码。 user1 = user1_^^^123 user2 = user2-***123 # vim svnserve.conf [general] ##在下面增长这5行内容 anon-access = none ##匿名用户,没有权限 auth-access = write ##被受权的用户,有写权限 password-db = passwd ##用户密码存储位置 authz-db = authz ##权限控制文件位置,这里只写一个字符串,表示这个字符串就是一个文件名,位置在当前目录下,针对svnserve.conf的相对路径。 realm = /data/svnroot/myproject ##表示对哪个项目生效,绝对路径。 # svnserve -d -r /data/svnroot/ //启动SVN,-d:deamon的形式,后台启动;-r:指定SVN所在路径;后面也能够跟到项目名。 # ps aux |grep svn root 1621 0.0 0.0 162200 656 ? Ss 19:53 0:00 svnserve -d -r /data/svnroot/ root 1623 0.0 0.0 112676 984 pts/0 S+ 19:53 0:00 grep --color=auto svn # netstat -lntp |grep svn tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 1621/svnserve # iptables -nvL //检查一下有没有防火墙规则,有的话后续操做不会太顺利。
3、客户端上使用SVN(Linux)
# yum install -y subversion //另外一台机器上安装,安装好后就可使用svn命令了。 # mkdir svntest # cd !$ # svn checkout svn://192.168.93.130/myproject --username=aming //checkout,检出代码。若是你到一台机器上,历来没有链接过svn服务器的状况下,执行这一步之后,它就能够在本机上保存一个曾经你链接过的svnserve的用户名和密码。上面这条命令能够把远程服务端的myproject项目搞到本地来。 认证领域: /data/svnroot/myproject “aming”的密码: aming_!(*$123 //此处的密码就是配置文件中设置的密码 ----------------------------------------------------------------------- 注意! 你的密码,对于认证域: /data/svnroot/myproject 只能明文保存在磁盘上! 若是可能的话,请考虑配置你的系统,让 Subversion 能够保存加密后的密码。请参阅文档以得到详细信息。 你能够经过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”, 来避免再次出现此警告。 ----------------------------------------------------------------------- 保存未加密的密码(yes/no)?yes //将密码存在了/root/.subversion/servers下 取出版本 0。 [root@MRX svntest]# ls myproject # cd project ; ls -la 总用量 0 drwxr-xr-x 3 root root 18 8月 29 18:43 . drwxr-xr-x 3 root root 23 8月 29 18:43 .. drwxr-xr-x 4 root root 75 8月 29 18:43 .svn [root@MRX myproject]# cp /etc/fstab . # svn add ./fstab //添加到版本控制中心,把变动的想要搞到服务器上去的东西作个标记 A fstab # svn commit -m "add file" //把文件上传到服务器。先增长,再上传。 # svn commit -m "add fstab" 正在增长 fstab 传输文件数据. 提交后的版本为 1。 # svn delete filename //在本地删除 # svn commit -m "delete filename" //在服务器上删除 [root@MRX myproject]# svn delete fstab D fstab [root@MRX myproject]# svn commit -m "delete fstab" 正在删除 fstab 提交后的版本为 2。 # svn update //把当前目录下的文件都更新到最新版,把本地的和服务端的同步。 # svn log //查看变动日志 /root/.subversion/auth/svn.simple下的密码文件,若是某个用户不想存储了,能够删除这个文件。
4、客户端上使用SVN(windows)
官网 https://tortoisesvn.net/index.zh.html
下载TortoiseSVN 并安装
简明教程 http://www.jianshu.com/p/6b3b7b915332
下载好后随便选择一个文件夹,好比新建一个myproject,右键文件夹能够看到SVN Checkout和TortoiseSVN。
第一次使用时,也要先SVN checkout,点击以后,会弹出来一个窗口,在最上面的URL of repository里定义一下服务地址和项目地址就能够点OK了:svn://192.168.93.130/myproject。
点OK后再定义用户名和密码:
aming , aming_!(*$123
再点OK
试验:
在Windows的myproject目录下建立一个txt文档,内容随便写一点。再右键该文档,和在Linux上一样的操做,TortoiseSVN→add,再右键SVN commit,在上方空白框内输入add 123.txt,再点OK就能够了。
再到服务端或者另外一台客户端上svn update同步一下,就能够看到123.txt了。
在Linux上写了文档,一样的操做,再到Windows上右键SVN update一下,一样能够看到这个111.txt。
# svn add 111.txt A 111.txt [root@MRX myproject]# svn commit -m "add 111.txt" 正在增长 111.txt 传输文件数据. 提交后的版本为 4。