前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SVN之于GIT的理论优势

SVN之于GIT的理论优势

作者头像
Jean
发布2020-09-25 16:20:37
1.1K0
发布2020-09-25 16:20:37
举报
文章被收录于专栏:Web行业观察Web行业观察

SVN之于GIT的理论优势

目录

使用SVN管理代码SVN客户端:TortoiseSVN服务器:VisualSVN Server管理证书创建用户、用户组创建仓库下载仓库(checkout)提交(push)、更新(pull)查看历史记录本地撤销、撤销历史提交、回退版本忽略文件(本地变化)创建分支(云端变化)合并分支解决冲突备份SVN托管平台展开

SVN

官网:https://subversion.apache.org/

SVN(SubVersion)是Apache下一个开源的中心化版本控制系统,采用客户端/服务器架构存放项目仓库(仓库 = 代码 + 历史)。和分布式的Git相比,中心化的SVN有以下的诸多特点:

·中心化架构,轻量简单,适合中小规模的项目

·客户端本地不存储历史文件,节省空间(已有的记录不会自删)

·SVN更像是一个公共云端文件系统,使用http/DAV协议驱动

·拥有连续的整数版本号(修订号)

·弱化了“分支”的概念,svn分支实质上就是文件夹的拷贝,方便切换

·中心化的管理模式允许更精细的权限划分

·每一级目录都可以单独同步

·中心化存储易造成单点故障,需要定期备份

客户端:TortoiseSVN

官网:https://tortoisesvn.net/

TortoiseSVN是Windows下最流行的SVN客户端GUI工具,它的特点是基于Windows Explorer(文件资源管理器),通过文件图标,上下文菜单等形式实现SVN的功能,不用打开额外的应用程序。

服务器:VisualSVN Server

官网:https://www.visualsvn.com/server/

VisualSVN Server是Windows下一个简单易上手的SVN服务器兼GUI软件,支持web访问。

服务启动后,Visual SVN会自动在系统的“证书管理器”中添加一份以主机名为域名的根证书,证书的位置为“受信任的根证书颁发机构”,也就是非出厂自带的第三方自签名证书的存放位置。可以通过https安全访问这个域名,如下图是我的主机名证书。

管理证书

VisualSVN Server推荐用https,默认是基于主机名临时签发的自签名证书,可以在设置中更换。同时推荐在network面板中勾选“Automatically redirect HTTP to HTTPS(listen on port 80)”兼容http。

创建用户、用户组

打开VisualSVN Server Manager,添加用户。用户名和密码即可以下载svn仓库,也可以登录web网页。

点击添加用户组,输入组名,添加组成员。

后期可在任何文件夹的Properties中设置任何用户/用户组的读/写权限。

创建仓库

打开VisualSVN Server Manager,添加仓库。仓库类型选择第一个常规FSFS即可,第二个VDFS是VisualSVN基于FSFS的私有格式,一般用不到。

选择空仓库,后期根据项目需求设置目录结构,不必采用trunk、branches、tags的结构。

初始化用户权限,选择默认,以后再根据不同的目录结构分配权限。

下载仓库(checkout)

复制仓库的URL地址,在文件资源管理器或桌面空白处右键点击SVN checkout。

输入仓库的URL以及拷贝到本地的位置,Fully recursive指递归拷贝所有文件,HEAD revision指最新版本。

下载成功后,本地目录中有一个.svn的隐藏目录是用来存放仓库的元数据,不要碰它。

提交(push)、更新(pull)

空白处右键菜单中,SVN Update是从云端拉最新代码,SVN Commit是提交本地更新的代码。提交面板中,在Changes made中勾选需要提交的文件,或点击All全选。

注意,如果选中某个文件点击更新(而不是空白处),只会更新这个文件。

查看历史记录

可以从客户端(Tortoise)和网页端(Visual)2种途径查看仓库的历史记录。

1.TortoiseSVN客户端上选择show log

2.浏览器中访问VisualSVN网页端

本地撤销、撤销历史提交、回退版本

·本地撤销:撤销本地未提交的更新

·撤销历史提交:撤销某次提交的变更,可能引起冲突

·回退版本:恢复到某个版本,相当于若干次“撤销历史提交”

这3个概念容易混淆(3者的英文都包含“Revert”),首先,“本地撤销”就是将所有还未提交的变动撤销掉,对云端无任何影响:上下文菜单中点击Revert,然后选择要撤销的文件。

之后可以观察到文件图标的变化:

然后,“撤销历史提交”是指选择历史记录中的某条记录,撤销该条记录的变更,形成新的变更,如果这条记录是很久以前的,撤销时候可能会引起冲突。同样会形成新变更的是“回退版本”,后者实质上是若干次“撤销历史提交”的总和,即指定版本到最新版本之间的每次提交,所以“回退版本”不会引起冲突。

这两个操作需要在历史记录窗口中选择某历史版本,右键选择Revert changes from this revision或者Revert to this revision。

忽略文件(本地变化)

Git通过.gitignore忽略文件,TortoiseSVN通过对文件右键菜单中选择TortoiseSVN > Add to ignore list来实现,tortoise会帮你添加进svn:global-ignore中。

注意,忽略设置完后要提交,以同步云端(目录的属性变化)。

创建分支(云端变化)

SVN中创建分支的实质就是拷贝目录,所以有多种方式可以切分支,最简单的方式是在TortoiseSVN的Repo-browser中,对想要拷贝的目录(可以是根目录)右键选择copy to拷贝到新目录,从而创建所谓的分支。

注意,拷贝后只在服务端生效,需要SVN update一下同步到本地。

合并分支

和Git一样,SVN有好几种合并的方式,但多数情况下都是把分支中的修改合并到主干上来,本文只介绍这一种主要情况:在主干目录右键选择merge,选择第一个选项Merge a range of revisions。

一路下一步确定源和目标的范围,最后点击Test merge测试是否有冲突,如果没有则顺利合并。

注意:可以合并文件也可以合并整个文件夹。

解决冲突

无论是拉代码还是合并代码都有可能出现冲突,按照官方的说法,有3种类型的冲突:

·文件冲突:通常发生在文件同一行被多个人修改后

·属性冲突:文件/文件夹属性被改变时,比如忽略属性

·树冲突:移动/删除/重命名时易发生

注意,建议养成每次开始改动前先更新代码的习惯,从而减少冲突的可能性。

备份

因为SVN“中心化”的天然特性,需要定期备份避免数据丢失。在VisualSVN Server上对某个仓库选择Backup,存储为.vsvnbak格式的文件,最好发送到其他机器上。

SVN托管平台

·Github对SVN的支持:https://docs.github.com/en/github/importing-your-projects-to-github/support-for-subversion-clients

·SVNBucket(国内):https://svnbucket.com/

·SilkSVN:https://sliksvn.com/

(SVN真香)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-09-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 WebHub 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SVN之于GIT的理论优势
    • SVN
      • 客户端:TortoiseSVN
        • 服务器:VisualSVN Server
          • 管理证书
            • 创建用户、用户组
              • 创建仓库
                • 下载仓库(checkout)
                  • 提交(push)、更新(pull)
                    • 查看历史记录
                      • 本地撤销、撤销历史提交、回退版本
                        • 忽略文件(本地变化)
                          • 创建分支(云端变化)
                            • 合并分支
                              • 解决冲突
                                • 备份
                                  • SVN托管平台
                                  相关产品与服务
                                  访问管理
                                  访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
                                  领券
                                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档