安装SVN

简介:

现在的开发工作都是由团队合作来完成开发,通常都是团队中的每个人或者每几个人完成一个模块的开发,最后再将模块拼凑起来,形成一个完整的项目,这就涉及到了协同开发。在各个模块的开发过程中,肯定会因为出现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

创建版本库:

[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服务:

# -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版本库:

[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上随便拷贝个文件到检出来的版本库里,然后上传到服务端:

[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上传的文件:

[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]#

删除本地文件:

[root@localhost /home/svntest/myproject]# svn delete fstab 
D         fstab
[root@localhost /home/svntest/myproject]#

删除服务端的文件:

[root@localhost /home/svntest/myproject]# svn commit -m "delete fstap"
正在删除       fstab

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

查看变更日志:

[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]#



本文转自 ZeroOne01 51CTO博客,原文链接:http://blog.51cto.com/zero01/2059913,如需转载请自行联系原作者
相关文章
|
10月前
|
数据安全/隐私保护 Windows
svn篇1:svn下载安装
svn篇1:svn下载安装
287 0
|
10月前
|
Apache 项目管理 数据安全/隐私保护
【cpolar】TortoiseSVN如何安装并实现公网提交文件到本地SVN服务器
【cpolar】TortoiseSVN如何安装并实现公网提交文件到本地SVN服务器
157 0
|
24天前
|
Linux
Linux安装svn并启动
Linux安装svn并启动
56 10
|
7月前
|
Linux 数据安全/隐私保护
Linux下svn服务端的安装与配置
Linux下svn服务端的安装与配置
90 0
|
10月前
|
开发工具 数据安全/隐私保护 git
关于gitee的使用和svn小乌龟的安装及使用
关于gitee的使用和svn小乌龟的安装及使用
428 0
|
10月前
|
数据建模 Shell 数据安全/隐私保护
Docker下安装SVN
Docker下安装SVN
|
10月前
|
项目管理 开发工具 git
[集中式] SVN的安装与详细使用教程
[集中式] SVN的安装与详细使用教程
456 0
|
10月前
|
存储 安全 开发工具
快速入门安装及使用&git与svn的区别&常用命令
快速入门安装及使用&git与svn的区别&常用命令
183 0
|
Shell 开发工具 git
Git和SVN的区别并在Windows电脑安装Git
Git是目前较先进的分布式版本控制系统,通俗点讲就是一个备份系统,你每次更新并提交代码之后,它会给你提交的代码设置一个版本标记并将每个版本标记的代码都备份在系统上。如果你想要寻找你修改之前的代码,直接进行回滚到你想要的那个版本就可以了。
187 0
|
存储 安全 数据安全/隐私保护
SVN服务器安装路径
SVN服务器安装路径
156 0