前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >安装SVN

安装SVN

作者头像
端碗吹水
发布2020-09-23 12:44:08
1K0
发布2020-09-23 12:44:08
举报

笔记内容:安装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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-01-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 22.1 代码管理平台介绍
  • 22.2 安装svn
  • 22.3 客户端上使用svn(linux)
  • 22.4 客户端上使用svn(windows)
  • 扩展内容
相关产品与服务
代码托管
CODING 代码托管(CODING Code Repositories,CODING-CR)是为开发者打造的云端便捷代码管理工具,旨在为更多的开发者带去便捷、高效的开发体验,全面支持 Git/SVN 代码托管,包括代码评审、分支管理、超大仓库等功能。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档