22.1 代码管理平台介绍html
22.2 安装svnlinux
22.3 客户端上使用svn(linux)git
22.4 客户端上使用svn(windows)github
扩展内容web
同窗分享的svn文档 数据库
http://note.youdao.com/noteshare?id=1bb87a28a2973ae5722bf765882c2d8fvim
svn 多仓库管理 windows
http://elim.iteye.com/blog/1171108服务器
svn+ssh 网络
http://www.linuxfly.org/post/450/
svn清除保存的用户名和密码
http://holy2010.blog.51cto.com/1086044/645944
svn命令详解
http://blog.sina.com.cn/s/blog_963453200101eiuq.html
22.1 代码管理平台介绍
你要了解的常识
好比咱们公司开发的项目,咱们须要把这个代码放到平台里去管理
1.版本控制,记录若干文件内容变化,以便未来查阅特定版本修订状况
#好比一个项目(代码)咱们作了屡次变动,改善或更新。可以很方便的来查看
#好比,我变动了一些代码,别人也变动一些代码,若是有变动的话,你们都要知道,那变动了。这就设计到了协同开发,也就是说这一个文档咱们两我的一些在写,最后合并成一个文档
2.版本管理工具发展简史,cvs→svn→git 参考http://luckypoem14.github.io/test/2012/04/24/scm-history/
#早期流行cvs,可是兼容性不太好。后来就有人开发了svn,可是又有人发现svn也很差使,太慢。而后又开发出了git
#svn是cs架构,依赖于网络(客户端、服务端模式),没网的状况下开发就会遇到困难,没办法把代码推到服务器上去
#git在本地电脑里搞一个版本库,就在我本地电脑里去控制。当有了网络以后,在统一的传到网络上的那台核心服务器上去
3.svn全称subversion,是一个开源版本控制系统,始于2000年
4.git是linux创始人linus发起的,2005年发布,最初目的是更好管理linux内核代码
5.git和svn不一样在于git不须要依赖服务端就能够工做,即git是分布式的
6.关于git和svn的比较你们参考http://blog.lishiming.net/?p=305
7.github是基于git的在线web页面代码托管平台,能够选择付费服务
8.gitlab能够认为是一个开源的github,二者没有直接关系
能够认为gitlab与github是一个东西,可是本质上仍是有区别的
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
22.2 安装svn
由于是cs架构,因此必需要有服务端,咱们才能正常的使用它。因此先安装一个服务端
1.yum install -y subversion
2.建立版本库
#什么叫版本库,咱们拿版本控制版本管理工具。那咱们要作的就是建立版本,建立一些项目,咱们把代码放到这个项目里(也就是仓库里)
mkdir -p /data/svnroot/myproject
#版本库的目录自定义
svnadmin create /data/svnroot/myproject
#由于咱们建立的版本库是空的,因此要用svnadmin create初始化一下,生成一些文件
3.cd /data/svnroot/myproject/conf
#authz为权限配置文件,passwd为密码文件,svnserver.conf是仓库的配置文件,也经过这个配置文件来启动这个服务
4.vim authz//配置文件改成以下
[groups]
admins = aming,user1
[/] #指的是myproject这个目录(也就是咱们的项目名了)
@admins = rw
*= r
[myproject:/] #指的是svnroot这个目录下myproject项目。这种方式适合用在svn下有多个目录(项目)的状况下。此时的myproject只是其中一个项目而已
user1 = rw
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 #对那个项目生效。绝对路径
7.svnserve -d -r /data/svnroot //这样就启动了
#-d后台启动
#-r指定svn所在的路径在哪里,路径也能够写svnserve -d -r /data/svnroot/myproject
实例:
[root@axinlinux-01 ~]# yum install -y subversion #先安装
[root@axinlinux-01 ~]# mkdir -p /data/svnroot/myproject #建立版本库
[root@axinlinux-01 ~]# svnadmin create /data/svnroot/myproject #初始化文件
[root@axinlinux-01 ~]# ls -la /data/svnroot/myproject #看一下有哪些文件
总用量 8
drwxr-xr-x 6 root root 86 11月 21 19:57 .
drwxr-xr-x 3 root root 23 11月 21 19:55 ..
drwxr-xr-x 2 root root 54 11月 21 19:57 conf #咱们须要修改的是这个conf目录里的文件
drwxr-sr-x 6 root root 233 11月 21 19:57 db
-r--r--r-- 1 root root 2 11月 21 19:57 format
drwxr-xr-x 2 root root 231 11月 21 19:57 hooks
drwxr-xr-x 2 root root 41 11月 21 19:57 locks
-rw-r--r-- 1 root root 229 11月 21 19:57 README.txt
[root@axinlinux-01 ~]# cd !$/conf
cd /data/svnroot/myproject/conf
[root@axinlinux-01 conf]# ls #这三个文件都很重要
authz passwd svnserve.conf #authz是用来控制权限的。passwd是密码文件。svnserver.conf是仓库的配置文件,也经过这个配置文件来启动这个服务
[root@axinlinux-01 conf]# vim authz #编辑权限文件
[aliases] #别名相关的
# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average
[groups] #用户组。下面是对应仓库里面的目录,或者说是你的项目对应下面的目录。针对这些目录、用户或是组有是样的权限,读写或是读?
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
admins = aming,user1 #组名叫admins,组下面包含aming和user1
[/] #目录。只得就是咱们上面建立的 /data/svnroot/myproject目录(也就是咱们的项目)。这里写根(/),只得就是 /data/svnroot/myproject这个目录下的
@admins = rw #admins组的权限是rw
*= r #除了admins组以外剩余的人是r的权限
[myproject:/] #mypreject指的是项目的名字,也能够写其余的。适合用在/data/svnroot/myproject这个路径里,avnroot目录下有多个项目的状况下
user1 = rw
[root@axinlinux-01 conf]# vim passwd #编辑密码
aming = aming_!(*$123
user1 = user1_^^^123
user2 = user2-***123
[root@axinlinux-01 conf]# vim svnserve.conf #编辑几项配置
[general]
anon-access = none #匿名用户为没有任何权限
auth-access = write #被受权的用户(使用用户及密码登陆的)为写权限
password-db = passwd #用户的密码存在哪里。指的是文件,当前目录下
authz-db = authz #权限控制的文件在哪里(或是哪个)。指的是文件,当前目录下
realm = /data/svnroot/myproject #对那个项目生效。绝对路径
[root@axinlinux-01 conf]# svnserve -d -r /data/svnroot/ #启动
[root@axinlinux-01 conf]# ps aux |grep svn
root 2740 0.0 0.0 182800 812 ? Ss 20:37 0:00 svnserve -d -r /data/svnroot/
[root@axinlinux-01 conf]# netstat -lntp
tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 2740/svnserve
[root@axinlinux-01 conf]# iptables -nvL #无规则
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
22.3 客户端上使用svn(linux)
1.yum install -y subversion
客户端是须要安装的
2.svn checkout svn://192.168.208.128/myproject --username=aming
#checkout是检出代码。ip为服务端ip。myproject为要检出的哪一个项目。--username为指定哪一个用户登陆
若是一台机器历来没用过这个,执行这一步就会在本机上保存一个,曾经链接过的svnserver的用户名和密码
3.cd myproject ; ls -la
如下,将客户端的数据同步上传到服务端 :
4.cp /etc/fstab .
#将一个文件拷贝到myproject目录(项目)下来。至关于在客户端增长了数据
5.svn add . //添加到版本控制中心
#仅仅只是添加到了版本控制中心
6.svn commit -m “add file” //把文件上传到服务器
#再执行这一步才能将数据同步上传到服务端。服务端还须要执行svn up
7.svn delete filename //在本地删除
8.svn commit -m “delete filename” //在服务器上删除
9.svn update //把当前目录下的文件都更新到最新版
#可简写为svn up。曾经登录过就后保存用户和密码,svn up的时候就不会再次输入
10.svn log //查看变动日志
实例:
[root@axinlinux-01 ~]# cd /home/
[root@axinlinux-01 home]# mkdir svntest #先进入到这个目录下,让他检出到这里
[root@axinlinux-01 svntest]# svn checkout svn://192.168.208.128/myproject --username=aming #输入密码登陆(以前设置的)
[root@axinlinux-01 svntest]# ls #能够看到就有了这个目录
myproject
[root@axinlinux-01 svntest]# ls -la myproject/
总用量 0
drwxr-xr-x 3 root root 18 11月 21 21:28 .
drwxr-xr-x 3 root root 23 11月 21 21:28 ..
drwxr-xr-x 4 root root 75 11月 21 21:28 .svn #这个就是svn的配置文件
好比咱们在服务端更新了一些文件
咱们登陆另外一台机器
[root@axinlinux-03 home]# svn checkout svn://192.168.208.128/myproject --username=user1
[root@axinlinux-03 home]# ls #能够看到这个目录(项目)
myproject
[root@axinlinux-03 myproject]# cp /etc/fstab . #咱们把这个文件拷贝过来
[root@axinlinux-03 myproject]# ls
fstab
咱们已经跟本地的项目里面建立了一些文件(fstab),那么咱们须要把变动搞到服务端上去
[root@axinlinux-03 myproject]# svn add ./fstab #使用svn add来搞到服务端。但仅仅只是增长了打了个标记,只存在版本工具的数据库里。咱们还须要提交上传的动做
A fstab
[root@axinlinux-03 myproject]# svn commit -m "add fatab" #使用svn commit来上传到服务端
正在增长 fstab
传输文件数据.
提交后的版本为 1。
[root@axinlinux-01 myproject]# ls #回到本机看一下,并无显示
[root@axinlinux-01 myproject]# svn up #须要用svn up来升级一下。没有输入密码,下面为解释
正在升级 '.':
A fstab
更新到版本 1。
[root@axinlinux-01 myproject]# ls #而后就有了
fstab
咱们在服务端上再次svn up的时候并无提示输入密码,是由于已经登陆过了,被保存了。保存在了:
[root@axinlinux-01]# cd /root/.subversion/auth/svn.simple #根据登陆时的提示能够找到
[root@axinlinux-01 svn.simple]# ls
9c376e8a0ecd3f9b80d250b03ce2e3de
[root@axinlinux-01 svn.simple]# cat 9c376e8a0ecd3f9b80d250b03ce2e3de #用户和密码都是明文存储到了这
K 8
passtype
V 6
simple
K 8
password
V 12
user1_^^^123
K 15
svn:realmstring
V 52
<svn://192.168.208.128:3690> /data/svnroot/myproject
K 8
username
V 5
user1
END
[root@axinlinux-01 svn.simple]# rm -rf 9c376e8a0ecd3f9b80d250b03ce2e3de #若是不想存储能够把它删掉
而后咱们再去客户端作一个变动
[root@axinlinux-03 myproject]# ls
fstab
[root@axinlinux-03 myproject]# vim fstab #把刚才那个文件随便加一行
[root@axinlinux-03 myproject]# svn add ./fstab #会有警告
svn: 警告: W150002: “/home/myproject/fstab”已归入版本控制
svn: E200009: 由于一些目标已经版本化,因此不能增长所有目标
svn: E200009: 此请求操做的目标非法
[root@axinlinux-03 myproject]# svn commit -m "ch fstab" #这时候咱们把变动的推送到了服务端
正在发送 fstab
传输文件数据.
提交后的版本为 2。
[root@axinlinux-01 svntest]# cd myproject/ #再回到服务端来,作同步
[root@axinlinux-01 myproject]# ls
fstab
[root@axinlinux-01 myproject]# svn up #svn up以后,会让咱们输入root的密码。直接回车就好
正在升级 '.':
认证领域: <svn://192.168.208.128:3690> /data/svnroot/myproject
“root”的密码:
认证领域: <svn://192.168.208.128:3690> /data/svnroot/myproject #回车以后就会让咱们输入用户和密码了
用户名:
[root@axinlinux-01 myproject]# cat fstab #能够cat一下,就能够看到咱们增长的那一行
[root@axinlinux-01 myproject]# svn delete fstab #删除变动文件
D fstab
[root@axinlinux-01 myproject]# svn commit -m "delete fatab"
正在删除 fstab
提交后的版本为 3。
[root@axinlinux-03 myproject]# svn up #在另外一台上要svn up
正在升级 '.':
D fstab
更新到版本 3。
[root@axinlinux-03 myproject]# ls #再次查看就没有了
[root@axinlinux-03 myproject]# svn log
------------------------------------------------------------------------
r3 | user1 | 2018-11-21 22:56:40 +0800 (三, 2018-11-21) | 1 行
delete fatab
------------------------------------------------------------------------
r2 | user1 | 2018-11-21 22:45:42 +0800 (三, 2018-11-21) | 1 行
ch fstab
------------------------------------------------------------------------
r1 | user1 | 2018-11-21 22:25:58 +0800 (三, 2018-11-21) | 1 行
add fatab
------------------------------------------------------------------------
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
22.4 客户端上使用svn(windows)
1.官网 https://tortoisesvn.net/index.zh.html
小乌龟svn
2.下载TortoiseSVN 并安装
3.简明教程 http://www.jianshu.com/p/6b3b7b915332
实例:
点进去就直接下载了,安装就好了
实际操做中,官方下载的安装不了。最后从金山软件里找到下载的
下载完成后,重启一下电脑。右键会有小乌龟的图标就表明能够了
在windows上新建一个文件夹就叫myproject,做为咱们的项目目录。鼠标放在myproject目录上,点击右键,选择svn checkout。
在myproject目录里,新建一个txt。随便写点东西,保存。而后右键这个txt文件,选择add。此时该文件图标就多了个加号
而后再,右键,点击commit
此时,该文件的图标就变成了一个绿色的对号
而后,咱们再到linux服务端上,或者是另外一个客户端上
[root@axinlinux-03 myproject]# pwd
/home/myproject
[root@axinlinux-03 myproject]# svn up
正在升级 '.':
A 1.txt
更新到版本 4。
[root@axinlinux-03 myproject]# cat 1.txt
aaaaaaaaaaaa
bbbbbbbbbbbb
cccccccccccc
咱们在测试将linux上变动,在windows上查看
[root@axinlinux-03 myproject]# vim 121.txt
[root@axinlinux-03 myproject]# ls
121.txt 1.txt
[root@axinlinux-03 myproject]# svn add 121.txt
A 121.txt
[root@axinlinux-03 myproject]# svn commit -m "add 121.txt"
正在增长 121.txt
传输文件数据.
提交后的版本为 5。
在windows上,右键myproject目录,选择svn update