介绍
如果你刚刚接触 SubVersion, 这个章节提供了一个关于 SubVersion 的快速介绍.
SubVersion 是一个开源的版本控制系统. 使用 SubVersion, 你可以记录源代码文件和文档的历史. 它一直管理着文件和目录. 一个文件树被添加到一个核心仓库. 仓库就好像是一个通常的文件服务器, 除了它记录每一次文件和目录的变化.
前提
这里假设你知道如何运行Linux命令, 编辑文件, 在Ubuntu Linux 系统启动/停止 服务. 它还假设 Ubuntu Linux 正在运行, 你可以使用Sudo (RootSudo) 和你想使用 SubVersion 软件.
假设你需要使用所有的访问方法来访问 SVN 仓库. 同时假设你有 internet 连接和你已经配置好了 /etc/apt/sources.list.
文档的范围
为了使用 HTTP 协议来访问 SVN 仓库, 你必须安装和配置 web 服务. Apache 2 被证实可以于 SVN 一起工作. 关于如何安装 Apache 2 Webserver 超过了这篇文章的范围. 为 SVN 配置 Apache 2 Webserver 包含在这篇文章里.
为了使用 HTTP 协议来访问 SVN 仓库, 你必须在你的 Apache 2 web server 安装和配置数字证书. 安装和配置数字证书超过了这篇文章的范围. 你可以去查阅其它适当的文档.
安装
SubVersion 已经在 main 仓库了. 因此, 你可以运行如下命令安装 SubVersion:
$ sudo apt-get install subversion $ sudo apt-get install libapache2-svn
如果报告错误, 请下载包安装他们. 如果报告任何其它内容, 请解决他们. 如果不能解决错误, 请求助那些包的邮件列表.
服务配置
这一步假设你已经在你的系统安装好了上述的包. 这段将如何 SVN 仓库和访问项目.
建立 SVN仓库
SVN 仓库可以使用如下命令建立:
$ svnadmin create /path/to/repo/project
访问方法
SubVersion 仓库在可以通过多种不同的方法来访问 (checkout), 本地硬盘或不同的网络协议. 一个仓库位置, 无论如何都一直是一个 URL. 这个表说明了可以用来访问的不同的 URL 类型.
模式 | 访问方法 |
direct repository access (on local disk) | |
Access via WebDAV protocol to SubVersion-aware Apache 2 web server | |
Same as http://, but with SSL encryption | |
svn:// | Access via custom protocol to an svnserve server |
svn+ssh:// | Same as svn://, but through an SSH tunnel |
在这一结, 我们将看到如何为所有访问方法来配置 SVN. 这里, 我们隐藏了基本的知识. 对于更详细的使用明细, 你可以去查阅 svn book.
直接仓库访问 (file://)
这个是所有访问方法中最简单的. 不需要任何运行的 SVN server 进程. 这个访问 SVN 的方法被使用在同一台机器. 语法如下:
$ svn co file:///path/to/repo/project or $ svn co file://localhost/path/to/repo/project
注意: 请注意, 如果你不能说明 hostname, 你必须使用三个反斜杆 (///). 如果你说明 hostname, 你必须使用两个反斜杆 (//).
仓库的权限依赖于文件系统的权限. 如果用户有读/写权限, 他就可以 checkout/commit 变化给仓库.
通过 WebDAV 协议访问 (http://)
通过 WebDAV 协议访问 SVN repository, 你必须配置你的 Apache 2 web server. 你必须增加下面的部分打破你的 /etc/apache2/apache2.conf 文件:
<Location /svn> DAV svn SVNPath /path/to/repo AuthType Basic AuthName "Your repository name" AuthUserFile /etc/subversion/passwd <LimitExcept GET PROPFIND OPTIONS REPORT> Require valid-user </LimitExcept> </Location>
下一步, 你必须建立 /etc/subversion/passwd 文件. 这个文件包含了用户验证信息. 为了增加一条, 例如.. 为了增加一个用户, 你可以使用如下命令:
htpasswd2 /etc/subversion/passwd user_name
它将提示你输出密码,当你输入了密码, 用户就增加了. 现在, 你可以使用如何命令来访问仓库:
$ svn co http://hostname/project project --username user_name
它将提示你输入密码. 你必须输入一个你使用 htpasswd2 命令配置的密码. 当验证通过,项目被 checked out.
警告: 口令作为普通文本被传输. 如果你担心你的密码外泄, 你可以考虑使用 SSL 加密. 对于这个, 请看如下章节.
通过 WebDAV 协议和 SSL 加密访问 (https://)
通过 WebDAV 协议和 SSL 加密来访问 SVN 仓库 (https://) 和 http:// 类似,出了你必须安装和配置数字签名在你的 Apache 2 web server.
你可以安装一个数字签名证书通过 签名权威公司 比如 Verisign. alternatively, 你可以安装你直接的签名证书.
这一步假设你已经安装和配置了数字签名在你的 Apache 2 web server. 现在可以去访问 SVN 仓库,请访问上面的章节! 耶, 访问方法是一致的出了协议. 你必须使用 https:// 来访问 SVN 仓库.
通过定制的协议访问 (svn://)
一旦 SVN 仓库被建立, 你可以配置访问协议. 你可以编辑 /path/to/repos/project/conf/svnserve.conf 文件来配置访问控制.
例如, 为了设置权限你可以取消注解在配置文件中的如下行:
# [general] # password-db = passwd
取消注解下面的行以后, 你可以提供一个用户列表在 passwd 文件. 因此, 在同样的目录编辑 passwd 文件和增加一个新用户. 语法如下:
username = password
对于详细说明, 请查询文件.
现在, 可以通过 svn:// 自定义协议来访问 SVN 在同一台机器或不同机器, 你可以运行svnserver 使用 svnserve 命令. 语法如下:
$ svnserve -d --foreground -r /path/to/repo # -d -- daemon mode # --foreground -- run in foreground (useful for debugging) # -r -- root of directory to serve For more usage details, please refer, $ svnserve --help
当你运行这个命令后, SVN 将来时监听缺省的端口 (3690). 访问这个项目仓库, 你必须运行如下命令:
$ svn co svn://hostname/project project --username user_name
基于上面的配置, 它提示输入口令. 当验证通过, 它将从 SVN 仓库 checks out 出代码.
使用本地的文件来同比项目仓库, 你可以运行 update sub-command. 语法如下:
$ cd project_dir $ svn update
对于使用 SVN sub-command 的详细资料, 你可以参考手册. 例如, 学习更多关于 co (checkout) 命令, 运行:
$ svn co help
通过自定义协议和 SSL 加密来访问 (svn+ssh://)
和 svn:// 方法的配置和服务器的进程相同. 对于详细, 请阅读上面的章节. 这一步假设, 你已经通过了上一步并使用 svnserve 命令运行.
它还假设 ssh server 正在运行在这台机器上并允许连接. 为了证实, 请尝试使用 ssh 登录机器. 如果你可以登录, 那么所有的事都是正确的. 如果你不能, 在更远的尝试以前请处理它.
svn+ssh:// 协议是使用 SSL 加密来访问 SVN 仓库. 如你所知的, 数据传输被加密. 为了访问 SVN 仓库, 你必须运行下面的命令:
$ svn co svn+ssh://hostname/path/to/repos/project project --username user_name
提示: 你使用这种方法来访问 SVN 仓库时,必须使用完整路径 (/path/to/repos/project) 来访问.
基于服务器的配置, 它提示输入密码. 你必须输入你通过 ssh 登录的密码. 当验证通过, 它将从 SVN 仓库 checks out 出代码.
你也可以参阅 SVN 图书获得关于 svn+ssh:// 协议的更详细信息。