linux 学习笔记-086-代码管理平台-代码管理平台介绍,svn 的安装和使用

发布于 2018-05-15  388 次阅读


代码管理平台介绍

常识

版本控制,记录若干文件内容变化,以便将来查阅特定版本修订情况

版本管理工具发展简史,cvs --> svn --> git

参考:http://luckypoem14.github.io/test/2012/04/24/scm-history/

svn 全称 subversion,是一个开源版本控制系统,始于 2000 年(依赖于网络,C/S 架构)

git 是 linux 创始人 linus 发起的,2005 年发布,最初目的是更好管理 linux 内核代码

git 和 svn 不同在于 git 不需要依赖服务端就可以工作,即 git 是分布式的

关于 git 和 svn 的比较参考:http://blog.lishiming.net/?p=305

github 是基于 git 的在线 web 页面代码托管平台,可以选择付费服务

gitlab 可以认为是一个开源的 github,两者没有直接关系

安装 svn

安装 svn 服务端并创建版本库

[root@am-01:~#] yum -y install subversion

[root@am-01:~#] mkdir -p /data/svnroot/myproject

[root@am-01:~#] svnadmin create /data/svnroot/myproject

[root@am-01:~#] ls /data/svnroot/myproject/

conf  db  format  hooks  locks  README.txt

[root@am-01:~#] cd !$

cd /data/svnroot/myproject/

[root@am-01:/data/svnroot/myproject#] cd conf/

[root@am-01:/data/svnroot/myproject/conf#] ls

authz  passwd  svnserve.conf

#authz 为权限配置文件,passwd 为密码文件,svnserve.conf 为仓库的配置文件

[root@am-01:/data/svnroot/myproject/conf#] vim authz

[groups]

admins = am,user1

#创建一个 admins 组,组成员有 am 和 user1

[/]

@admins = rw

* = r

#[/]表示"/data/svnroot/myproject"目录,使用"@admins"来指定组所拥有的权限,使用"* ="来指定其他用户所拥有的权限

[myproject:/]

user1 = rw

#这个是赋予权限的另一种方式,用在有多个项目的时候,这里表示 user1 对 myproject 这个项目拥有 rw 权限

[root@am-01:/data/svnroot/myproject/conf#] vim passwd

[users]

am = 123456

user1 = 123456

#设置 am 和 user1 的密码

[root@am-01:/data/svnroot/myproject/conf#] vim svnserve.conf

[general]

anon-access = none

#设置匿名用户没权限

auth-access = write

#被授权的用户可写

password-db = passwd

#指定用户密码的存放文件,针对 svnserve.conf 的相对路径

authz-db = authz

#指定用户权限控制文件,针对 svnserve.conf 的相对路径

realm = /data/svnroot/myproject

#指定对哪一个项目生效,需要绝对路径

启动 svn 服务端

[root@am-01:/data/svnroot/myproject/conf#] svnserve -d -r /data/svnroot/

#-d 表示后台运行,-r 指定 svn 目录

[root@am-01:/data/svnroot/myproject/conf#] ps aux | grep svn

root      95290  0.0  0.0 162196   656 ?        Ss   22:41   0:00 svnserve -d -r /data/svnroot/

[root@am-01:/data/svnroot/myproject/conf#] netstat -lntp | grep svn

tcp        0      0 0.0.0.0:3690            0.0.0.0:*               LISTEN      95290/svnserve    

客户端上使用 svn

linux 客户端(需要注意防火墙规则)

A 机器

[root@am-02:~#] yum -y install subversion

[root@am-02:~#] cd /home/

[root@am-02:/home#] ls

am  aming111  mysql  user1  user2  user3  user5  user6  user8

[root@am-02:/home#] mkdir svntest

[root@am-02:/home#] cd svntest/

[root@am-02:/home/svntest#] svn checkout svn://172.17.1.240/myproject --username=am

#svn 客户端(linux)的用法,指定服务端 IP 和需要检索的项目,"--username"指定用户

认证领域: <svn://172.17.1.240:3690> /data/svnroot/myproject

“am”的密码:



-----------------------------------------------------------------------

注意!  你的密码,对于认证域:



   <svn://172.17.1.240:3690> /data/svnroot/myproject



只能明文保存在磁盘上!  如果可能的话,请考虑配置你的系统,让 Subversion

可以保存加密后的密码。请参阅文档以获得详细信息。



你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”,

来避免再次出现此警告。

-----------------------------------------------------------------------

保存未加密的密码(yes/no)?yes

取出版本 0。

[root@am-02:/home/svntest#] ll -a myproject/

总用量 0

drwxr-xr-x 3 root root 17 5 月  15 23:32 .

drwxr-xr-x 3 root root 22 5 月  15 23:32 ..

drwxr-xr-x 4 root root 70 5 月  15 23:32 .svn

B 机器

[root@am-03:~#] yum -y install subversion

[root@am-03:~#] cd /home/

[root@am-03:/home#] mkdir svntest

[root@am-03:/home#] cd svntest/

[root@am-03:/home/svntest#] svn checkout svn://172.17.1.240/myproject --username=user1

认证领域: <svn://172.17.1.240:3690> /data/svnroot/myproject

“user1”的密码:



-----------------------------------------------------------------------

注意!  你的密码,对于认证域:



   <svn://172.17.1.240:3690> /data/svnroot/myproject



只能明文保存在磁盘上!  如果可能的话,请考虑配置你的系统,让 Subversion

可以保存加密后的密码。请参阅文档以获得详细信息。



你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”,

来避免再次出现此警告。

-----------------------------------------------------------------------

保存未加密的密码(yes/no)?yes   

取出版本 0。

[root@am-03:/home/svntest#] ll -a myproject/

总用量 0

drwxr-xr-x 3 root root 17 5 月  15 23:50 .

drwxr-xr-x 3 root root 22 5 月  15 23:50 ..

drwxr-xr-x 4 root root 70 5 月  15 23:50 .svn

[root@am-03:/home/svntest#] cd myproject/

[root@am-03:/home/svntest/myproject#] cp /etc/fstab .

[root@am-03:/home/svntest/myproject#] ls

fstab

[root@am-03:/home/svntest/myproject#] svn add ./fstab

A         fstab

#给需要上传到服务端的指定文件打一个标记

[root@am-03:/home/svntest/myproject#] svn commit -m "add fstab"

正在增加       fstab

传输文件数据.

提交后的版本为 1。

#把打了标记的文件上传到服务端

A 机器

[root@am-02:/home/svntest#] cd myproject/

[root@am-02:/home/svntest/myproject#] svn up

正在升级 '.':

A    fstab

更新到版本 1。

[root@am-02:/home/svntest/myproject#] ls

fstab

#使用 svn up 更新一下

小知识

[root@am-02:~#] ls /root/.subversion/auth/svn.simple/

94099f5654f111940dd9eef05dc575b4

[root@am-02:~#] cat !$94099f5654f111940dd9eef05dc575b4

cat /root/.subversion/auth/svn.simple/94099f5654f111940dd9eef05dc575b4

K 8

passtype

V 6

simple

K 8

password

V 6

123456

K 15

svn:realmstring

V 49

<svn://172.17.1.240:3690> /data/svnroot/myproject

K 8

username

V 2

am

END

#可以见到,svn 客户端的密码是明文保存的,假如把密码文件删除,下次做 svn up 操作的时候会需要输入用户名和密码

总结

svn add .  //添加到版本控制中心

svn commit -m "add file" //把文件上传到服务器

svn delete filename  //在本地删除

svn commit -m "delete filename" //在服务器上删除

svn update //把当前目录下的文件都更新到最新版

svn log //查看变更日志

windows 客户端

安装 svn 客户端,下载地址:https://tortoisesvn.net/index.zh.html

linux 学习笔记-086-代码管理平台-代码管理平台介绍,svn 的安装和使用

linux 学习笔记-086-代码管理平台-代码管理平台介绍,svn 的安装和使用

linux 学习笔记-086-代码管理平台-代码管理平台介绍,svn 的安装和使用

下载汉化包并安装

linux 学习笔记-086-代码管理平台-代码管理平台介绍,svn 的安装和使用

linux 学习笔记-086-代码管理平台-代码管理平台介绍,svn 的安装和使用

自行安装,此处不详说

svn 使用

新建一个文件夹,右键选择"SVN Checkout"或者"SVN 检出",如果右键没有这选项,重启一下计算机即可

linux 学习笔记-086-代码管理平台-代码管理平台介绍,svn 的安装和使用

输入相关信息,点击确定

linux 学习笔记-086-代码管理平台-代码管理平台介绍,svn 的安装和使用

输入用户名密码,点击确定

linux 学习笔记-086-代码管理平台-代码管理平台介绍,svn 的安装和使用

之后会显示已经更新完成

linux 学习笔记-086-代码管理平台-代码管理平台介绍,svn 的安装和使用

在目录下新建一个文件并输入一些东西

linux 学习笔记-086-代码管理平台-代码管理平台介绍,svn 的安装和使用

linux 学习笔记-086-代码管理平台-代码管理平台介绍,svn 的安装和使用

把该文件提交到服务端,记得提交的时候需要做标记

linux 学习笔记-086-代码管理平台-代码管理平台介绍,svn 的安装和使用

linux 学习笔记-086-代码管理平台-代码管理平台介绍,svn 的安装和使用

linux 学习笔记-086-代码管理平台-代码管理平台介绍,svn 的安装和使用

linux 学习笔记-086-代码管理平台-代码管理平台介绍,svn 的安装和使用

到另一台机器上查看实验结果(这里选择 linux 系统的 A 机器)

[root@am-02:/home/svntest/myproject#] svn up

正在升级 '.':

A    123.txt

更新到版本 2。

[root@am-02:/home/svntest/myproject#] ls

123.txt  fstab

[root@am-02:/home/svntest/myproject#] cat 123.txt

123456

在 A 机器上编辑一个文件并提交到服务端

[root@am-02:/home/svntest/myproject#] vim aaa.txt

safdjnjsakndasnkdnaskdn

askjedvdnvn

[root@am-02:/home/svntest/myproject#] svn add aaa.txt

A         aaa.txt

[root@am-02:/home/svntest/myproject#] svn commit -m "add aaa.txt"

正在增加       aaa.txt

传输文件数据.

提交后的版本为 3。

回到 windows 客户端,更新一下看看

linux 学习笔记-086-代码管理平台-代码管理平台介绍,svn 的安装和使用

linux 学习笔记-086-代码管理平台-代码管理平台介绍,svn 的安装和使用

linux 学习笔记-086-代码管理平台-代码管理平台介绍,svn 的安装和使用

扩展

svn 多仓库管理:

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