安装SVN

2020-09-23 12:44:08 浏览数 (1)

笔记内容:安装svn

笔记日期:2018-01-11

  • 22.1 代码管理平台介绍
  • 22.2 安装svn
  • 22.3 客户端上使用svn(linux)
  • 22.4 客户端上使用svn(windows)

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不同在于:svn是集中型的,有一个中心的服务端,而git是分散型的,git不需要依赖服务端就可以工作,即git是分布式的
  • 关于git和svn的比较大家 参考:http://blog.lishiming.net/?p=305
  • github是基于git的在线web页面代码托管平台,公开库是免费的,而私有库则是付费服务
  • gitlab可以认为是一个开源的github,两者没有直接关系

22.2 安装svn

安装命令:

yum install -y subversion

创建版本库:

代码语言:javascript复制
[root@localhost ~]# mkdir -p /data/svnroot/myproject  # 创建一个目录来存放工程的版本库
[root@localhost ~]# svnadmin create /data/svnroot/myproject  # 创建工程的版本库
[root@localhost ~]# cd !$/conf  # conf是配置文件所在的目录
cd /data/svnroot/myproject/conf
[root@localhost /data/svnroot/myproject/conf]# ls
authz  passwd  svnserve.conf  # authz为权限配置文件,passwd为密码文件,svnserve.conf为仓库配置文件
[root@localhost /data/svnroot/myproject/conf]# vim authz  # 加入以下内容
[groups] # 用户组
admins = user,user1 # 定义用户,可以定义多个 

[/] # 根目录
@admins = rw # 设置该用户组的权限是可读可写
*= r  # 设置所有的用户都可以读

# 可以指定对某个项目进行设置权限
#[myproject:/]
#user1 = rw  # 设置user1拥有可读可写权限
[root@localhost /data/svnroot/myproject/conf]# vim passwd  # 加入以下内容
[users]
user = user_^^^123
user1 = user1-***123
[root@localhost /data/svnroot/myproject/conf]# vim svnserve.conf  # 加入以下内容
[general]
anon-access = none  # 定义匿名用户的权限
auth-access = write  # 定义用户的权限
password-db = passwd  # 定义用户的密码文件
authz-db = authz  # 定义用户的权限文件
realm = /data/svnroot/myproject  # 定义对哪个项目生效

完成以上配置后,启动svn服务:

代码语言:javascript复制
# -d指定后台启动,-r指定库所在的目录
[root@localhost /data/svnroot/myproject/conf]# svnserve -d -r /data/svnroot
[root@localhost /data/svnroot/myproject/conf]# ps aux |grep svn
root       4183  0.0  0.0 162184   656 ?        Ss   23:22   0:00 svnserve -d -r /data/svnroot
root       4185  0.0  0.0 112668   972 pts/0    S    23:22   0:00 grep --color=auto svn
[root@localhost /data/svnroot/myproject/conf]# netstat -lntp |grep svn
tcp        0      0 0.0.0.0:3690            0.0.0.0:*               LISTEN      4183/svnserve       
[root@localhost /data/svnroot/myproject/conf]#

22.3 客户端上使用svn(linux)

我这里使用两台机器作为测试的客户端。

客户端也需要安装subversion:

yum install -y subversion

在客户端A中检出服务端的myproject版本库:

代码语言:javascript复制
[root@localhost ~]# cd /home/
[root@localhost /home]# mkdir svntest
[root@localhost /home]# cd svntest/
[root@localhost /home/svntest]# svn checkout svn://192.168.77.130/myproject --username=user
认证领域: <svn://192.168.77.130:3690> /data/svnroot/myproject
“user”的密码: # 输入密码

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

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

只能明文保存在磁盘上!  如果可能的话,请考虑配置你的系统,让 Subversion
可以保存加密后的密码。请参阅文档以获得详细信息。

你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”,
来避免再次出现此警告。
-----------------------------------------------------------------------
保存未加密的密码(yes/no)?yes
取出版本 0。
[root@localhost /home/svntest]# ls
myproject
[root@localhost /home/svntest]# ll -a myproject/
总用量 0
drwxr-xr-x 3 root root 17 1月  12 00:05 .
drwxr-xr-x 3 root root 22 1月  12 00:05 ..
drwxr-xr-x 4 root root 70 1月  12 00:05 .svn  # svn配置文件
[root@localhost /home/svntest]#

在客户端B中也是如上操作,就不赘述了。

在客户端B上随便拷贝个文件到检出来的版本库里,然后上传到服务端:

代码语言:javascript复制
[root@localhost /home/myproject]# cp /etc/fstab .
[root@localhost /home/myproject]# ls
fstab
[root@localhost /home/myproject]# svn add ./fstab  # 添加到版本控制中心
A         fstab
[root@localhost /home/myproject]# svn commit -m "add fstab"  # 把文件上传到服务器
正在增加       fstab
传输文件数据.
提交后的版本为 1。
[root@localhost /home/myproject]#

在客户端A上同步服务端的文件,这时就会同步刚刚客户端B上传的文件:

代码语言:javascript复制
[root@localhost /home/svntest]# cd myproject/
[root@localhost /home/svntest/myproject]# ls
[root@localhost /home/svntest/myproject]# svn up  # 这个命令把当前目录下的文件都更新到最新版
正在升级 '.':
A    fstab
更新到版本 1。
[root@localhost /home/svntest/myproject]# ls
fstab
[root@localhost /home/svntest/myproject]#

删除本地文件:

代码语言:javascript复制
[root@localhost /home/svntest/myproject]# svn delete fstab 
D         fstab
[root@localhost /home/svntest/myproject]#

删除服务端的文件:

代码语言:javascript复制
[root@localhost /home/svntest/myproject]# svn commit -m "delete fstap"
正在删除       fstab

提交后的版本为 2。
[root@localhost /home/svntest/myproject]#

查看变更日志:

代码语言:javascript复制
[root@localhost /home/svntest/myproject]# svn log
------------------------------------------------------------------------
r1 | user | 2018-01-12 00:27:06  0800 (五, 2018-01-12) | 1 行

add fstab
------------------------------------------------------------------------
[root@localhost /home/svntest/myproject]#

22.4 客户端上使用svn(windows)

在官网上下载TortoiseSVN 并安装,官网地址:

https://tortoisesvn.net/index.zh.html

由于我已经安装过了,而且windows上的操作也比较简单,我这里就不演示了,以下提供了安装的教程,以及我之前在windows上安装服务端和客户端的记录文章。

TortoiseSVN简明教程:

http://www.jianshu.com/p/6b3b7b915332

在windows上安装SVN服务端以及TortoiseSVN:

https://cloud.tencent.com/developer/article/1702573


扩展内容

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

0 人点赞