1. 项目协同
  2. 代码仓库
  3. DevOps 实践之旅
  4. 一分钟开始持续集成之旅
  5. 持续部署
  6. 制品库

SVN 支持

产品功能介绍

目前 CODING 已支持原生的 SVN 仓库,客户端通过 svn+ssh 协议连接到 CODING 的服务器,数据传输全程走 ssh 加密通道。

创建 SVN 仓库

在创建项目的界面,选择【仓库类型】下的【SVN 仓库(Beta)】:

选择 创建 SVN 仓库推荐布局 时,将会自动创建 tags branches trunk 三个目录。这是多数 SVN 仓库的推荐目录布局。

仓库初始化完成之后,即可在代码浏览界面看到 SVN 仓库的内容。

在【代码浏览】界面可以看到这个仓库的 SVN 地址:svn://subversion.e.coding.net/StrayBirds/svn

注:目前只支持在创建项目中开启 svn 仓库,不支持在 git 仓库中新建 svn 仓库。

SVN 仓库的使用

SVN 仓库服务目前支持大多数主流 SVN 客户端。推荐使用各客户端的最新稳定版本。

在 Mac 环境安装使用 SVN 客户端

使用 Homebrew 安装。运行下面命令安装 Homebrew:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Homebrew 安装好之后,在终端输入

$ brew install subversion

命令完成 SVN 安装。

使用命令 svn --version 验证 SVN 正确安装完成:

svn, version 1.9.7 (r1800392)
compiled Feb 28 2018, 15:54:50 on x86_64-apple-darwin17.3.0
Copyright (C) 2017 The Apache Software Foundation.
This software consists of contributions made by many people;
see the NOTICE file for more information.
Subversion is open source software, see http://subversion.apache.org/
The following repository access (RA) modules are available:

* ra_svn : Module for accessing a repository using the svn network protocol.
- with Cyrus SASL authentication
- handles 'svn' scheme
* ra_local : Module for accessing a repository on local disk.
- handles 'file' scheme
* ra_serf : Module for accessing a repository via WebDAV protocol using serf.
- using serf 1.3.9 (compiled with 1.3.9)
- handles 'http' scheme
- handles 'https' scheme
The following authentication credential caches are available:
* Plaintext cache in /Users/Liwenqiu/.subversion
* Mac OS X Keychain

使用命令 svn checkout svn://subversion.e.coding.net/example/example-project (请将地址替换为你的 SVN 仓库地址)来检出 SVN 仓库:
img

接下来可以使用 addcommit 命令往仓库中新添加内容:
img

除了使用 svn 协议之外,还可以使用 svn+ssh 协议来访问仓库,如下图所示:
img

使用 Cornerstone 来访问 SVN 仓库

也可以通过 Cornerstone 来使用。
打开 Cornerstone 后,点击 Add Repostory 来添加 SVN 仓库(请将地址替换为你的 SVN 仓库地址)引用:
img

然后可以看到仓库的内容:
img

把仓库 checkout 出来,并且编辑文件之后,就可以 commit 进仓库,如下图:
img

Windows 下的 SVN 客户端的安装使用

在 Windows 平台,推荐使用 TortoiseSVN下载 安装完成之后,在任意文件目录单机鼠标右键,选择 Checkout 就可以把 SVN 仓库 checkout 到本地(请将地址替换为你的 SVN 仓库地址):

第一次 checkout 需要输入用户名和密码:

勾选 Save authentication 保存认证信息之后就不需要每次都输入密码了。

之后我们进入检出的文件夹里面,新建 README.md 文件,在空白处右键鼠标,选择SVN commit... 将新建的文件保存进版本库:


Linux 下的 SVN 客户端的安装使用

在 Linux 下可以直接用系统的包管理工具安装 SVN。

在 Fedora 上用 yum 安装
$ sudo yum install subversion
在 Ubuntu 或 Debian 上用 apt-get 安装
$ sudo apt-get install subversion

安装成功之后,就可以用 svn checkout / commit 来访问 SVN 仓库,使用方法与在 Mac 平台使用命令行没有太大区别,这里就不再一一举例。

Ubuntu 下使用 SVN 命令行出现协商认证机制错误

在 ubuntu 下使用 SVN 命令行客户端出现一下错误:

svn: E210007: Cannot negotiate authentication mechanism

因为 SVN 的认证过程使用到了 sasl 库来完成认证过程,所以需要安装依赖库来使用 sasl 认证,用如命令安装

$ sudo apt-get install cyrus-sasl2-dbg

SVN 目录权限

SVN 仓库现支持权限控制,管理员能够为单独的用户设置指定目录的权限。管理员可以为仓库及子目录单独设置以下 3 种权限:

  • 只读:只能查看设置的目录,不能写入,允许检出。
  • 读写:可对设置的目录进行查看和写入,允许检出。
  • 无权限:不能查看也不能写入,禁止检出。

如何设置权限

因每个用户默认对仓库都有读写权限,若需额外权限控制,请轻点 SVN 仓库栏菜单按钮后继续点击权限按钮。

在新的设置页面就可以为该目录添加单独的用户与相应权限。

设置完成后将会用颜色显示被设置过权限的目录。

  • 黄色:只读
  • 灰色:无权限
  • 黑色(默认):读写

权限覆盖

若设置了父目录的权限后,又设置了子级目录权限。如:父目录权限为只读,子目录权限为读写,则用户可以对子目录进行读写操作,下面用一个实例说明这种情况。

现假设有一位 A 君 君,SVN 仓库的目录为以下结构:

tags
trunk–
        |– a.txt
        |– b.txt

  1. 若 A 君对 trunk 目录权限为「只读」,当 A 君检出仓库时,会包含 trunk 目录,但 A 君编辑了 trunk 目录下文件并进行提交时会被禁止。

  2. 若 A 君对 trunk 目录权限为「读写」,当 A 君检出仓库时,会包含 trunk 目录, A 君可正常对 trunk 目录下文件进行读写。

  3. 若 A 君对 trunk 目录权限为「无权限」,当 A 君检出仓库时,不会包含 trunk 目录。

  4. 若 A 君对 trunk 目录权限为「只读」,并对 trunk/a.txt 权限为「读写」。当 A 君检出仓库时,会包含 trunk 目录,则可以对 a.txt 进行读写,但是对 b.txt 的修改与提交是无效的,属于「只读」权限,这种情况便属于「权限覆盖」。

上一篇文件 / 路径锁定
最近更新
感谢反馈有用
感谢反馈没用

在阅读中是否遇到以下问题?

您希望我们如何改进?