版本控制系统
版本控制是管理改动信息的技术。它对于程序员而言一直是重要的工具,他们经常花时间对程序进行小改动之后又在第二天改回来。但版本控制软件的用途却远远超出了软件开发的界线。无论何处您可以发现人们使用计算机去管理那些经常变动的信息,那里都有使用版本控制的空间。
Subversion
Subversion 是一个开源的版本控制系统。使用 Subversion,您可以记录源文件和文档的历史。它管理文件和目录。文件树被放入了中心库中。库更象是一个普通的文件服务器,除了它可以记住对文件和目录的每次改变。
安装
要通过 HTTP 协议来访问 Subversion 库,您必须安装和配置一个 web 服务器。Apache2 被证明可以和 Subversion 一起工作。请参考 Apache2 章节的 HTTP 小节以安装和配置 Apache2。要使用 HTTPS 协议访问 Subversion 库,您必须在您的 Apache2 web 服务器上安装和配置数字证书。请参考 Apache2 章节的 HTTPS 小节以 安装和配置数据证书。
要安装 Subversion,可以在终端提示符后运行以下命令:
sudo apt-get install subversion libapache2-svn
服务器配置
这一步假定您已经在您的系统上安装了上面提及的包。本部分内容说明如何创建一个 Subversion 库和访问项目。
创建 Subversion 库
Subversion 库可以在终端提示符后使用以下命令创建:
svnadmin create /path/to/repos/project
访问方式
Subversion 库可以通过许多不同的方式如通过在本地磁盘或不同的网络协议来访问 (checked out)。然而,库的位置经常是一个 URL。下表描述了不同的URL模式如何映射相应的访问方式。
表 4.1. 访问方式
模式
访问方式
file://
直接访问库 (在本地磁盘)
http://
通过 WebDAV 协议访问带有 Subversion 的 Apache2 web 服务器。
https://
与 http:// 相同,但有 SSL 加密
svn://
通过自身协议访问 svnserve 服务
svn+ssh://
与 svn:// 一样,但使用 SSH 遂道
在本部分,我们将看到如何为所有这些访问方式来配置 Subversion。这里,我们只介绍基本用法。更多详细、高级用法请参阅svn 书
直接访问库 (file://)
这是所有访问方式中最简单的。它不要求运行任何 Subversion 服务器进程。该访问方式用于在同一台机器上访问 Subversion。在终端提示符后输入的命令如下所示:
svn co file:///path/to/repos/project
或
svn co file://localhost/path/to/repos/project
[注意]
如果您没有指定主机名,则需要三个斜杠 (///) -- 其中两个是协议的 (这里是 file),另一个是路径前的。如果您指定了主机名,那么您必须使用双个斜杠 (//)。
库权限依赖于文件系统的权限。如果用户有读/写权限,他可以从库中检出或者提交到库。
通过 WebDAV 协议 (http://) 访问
要通过 WebDAV 协议访问 Subversion,您必须配置您的 Apache2 web 服务器。您必须在您的 /etc/apache2/apache2.conf 文件中添加下面一小段:
<Location /svn>
DAV svn
SVNPath /path/to/repos
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://servername/svn
[警告]
该密码是以纯文本传输的。如果您担心密码被截取,建议您使用 SSL 加密。相关细节,请参考下一章节。
通过带有 SSL 加密的 WebDAV 协议来访问 (https://)
通过带 SSL 加密的 WebDAV 协议 (https://) 访问也使用 http:// 类似,只是您必须在您的 Apache2 web 服务器中安装和配置数字证书。
您可以安装由证书签署机构如 Verisign 颁发的数字证书。或者,您也可以安装自己签署的证书。
这一步假设您已经在您的 Apache2 web 服务器中安装和配置了数字证书。现在要访问 Subversion 库,请参考上一章节!除了所用协议之外访问方式完全相同。您必须使用 https:// 来访问 Subversion 库。
通过自身协议访问 (svn://)
一旦 Subversion 库被创建,您就可以配置访问控制了。您可以通过编辑 /path/to/repos/project/conf/svnserve.conf 文件来配置访问控制了。例如,要设置认证,您可以在配置文件中反注释下列行:
# [general]
# password-db = passwd
在反注释上面几行之后,您可以在 passwd 文件中维护用户列表。因此编辑同一目录中的文件 passwd 并添加新用户。其语法如下:
username = password
更多细节,请参考该文件。
现在要从本机或不同机器通过 svn:// 自身协议来访问 Subversion,您可以使用 svnserve 命令来运行 svnserver。其语法如下:
$ svnserve -d --foreground -r /path/to/repos
# -d -- daemon mode
# --foreground -- run in foreground (useful for debugging)
# -r -- root of directory to serve
For more usage details, please refer to:
$ svnserve --help
一旦您运行该命令,将启动 Subversion 并在缺省端口 (3690) 监听。要访问项目库,您必须在终端提示符后运行下列命令:
svn co svn://hostname/project project --username user_name
根据服务器的配置,出现密码提示。一旦您认证通过,将从 Subversion 库检出代码。要让本地副本同步项目库,您可以运行 update 子命令。在终端提示符后的命令语法如下所示:
cd project_dir ; svn update
关于 Subversion 子命令的更多细节,您可以参考手册。如为了学到关于 co (checkout) 命令的细节,请在终端提示符后运行下列命令:
svn co help
通过带有 SSL 加密的自身协议 (svn+ssh://) 访问
配置和服务器处理与用 svn:// 方式是相同的。详情请参考上面的章节。这一步假定您已经完成了上面的步骤并用 svnserve 命令启动了 Subversion 服务器。
它也假定 ssh 服务器已经在该机上运行并允许连接。为了确认,请尝试使用 ssh 登录该机器。如果您可以登录,一切就绪。如果不能登录,请在继续之前解决它。
svn+ssh:// 协议使用 SSL 加密来访问 Subversion 库。使用这种方式进行的数据传输是加密的。要访问项目库 (如 checkout),您必须使用下面的命令语法:
svn co svn+ssh://hostname/var/svn/repos/project
[注意]
使用这种访问方式您必须使用全路径 (/path/to/repos/project) 来访问 Subversion 库。
根据服务器配置,它将提示输入密码。在使用 ssh 登录时您必须输入密码。一旦您被认证通过之后,它将从 Subversion 库中检出代码。
版本控制是管理改动信息的技术。它对于程序员而言一直是重要的工具,他们经常花时间对程序进行小改动之后又在第二天改回来。但版本控制软件的用途却远远超出了软件开发的界线。无论何处您可以发现人们使用计算机去管理那些经常变动的信息,那里都有使用版本控制的空间。
Subversion
Subversion 是一个开源的版本控制系统。使用 Subversion,您可以记录源文件和文档的历史。它管理文件和目录。文件树被放入了中心库中。库更象是一个普通的文件服务器,除了它可以记住对文件和目录的每次改变。
安装
要通过 HTTP 协议来访问 Subversion 库,您必须安装和配置一个 web 服务器。Apache2 被证明可以和 Subversion 一起工作。请参考 Apache2 章节的 HTTP 小节以安装和配置 Apache2。要使用 HTTPS 协议访问 Subversion 库,您必须在您的 Apache2 web 服务器上安装和配置数字证书。请参考 Apache2 章节的 HTTPS 小节以 安装和配置数据证书。
要安装 Subversion,可以在终端提示符后运行以下命令:
sudo apt-get install subversion libapache2-svn
服务器配置
这一步假定您已经在您的系统上安装了上面提及的包。本部分内容说明如何创建一个 Subversion 库和访问项目。
创建 Subversion 库
Subversion 库可以在终端提示符后使用以下命令创建:
svnadmin create /path/to/repos/project
访问方式
Subversion 库可以通过许多不同的方式如通过在本地磁盘或不同的网络协议来访问 (checked out)。然而,库的位置经常是一个 URL。下表描述了不同的URL模式如何映射相应的访问方式。
表 4.1. 访问方式
模式
访问方式
file://
直接访问库 (在本地磁盘)
http://
通过 WebDAV 协议访问带有 Subversion 的 Apache2 web 服务器。
https://
与 http:// 相同,但有 SSL 加密
svn://
通过自身协议访问 svnserve 服务
svn+ssh://
与 svn:// 一样,但使用 SSH 遂道
在本部分,我们将看到如何为所有这些访问方式来配置 Subversion。这里,我们只介绍基本用法。更多详细、高级用法请参阅svn 书
直接访问库 (file://)
这是所有访问方式中最简单的。它不要求运行任何 Subversion 服务器进程。该访问方式用于在同一台机器上访问 Subversion。在终端提示符后输入的命令如下所示:
svn co file:///path/to/repos/project
或
svn co file://localhost/path/to/repos/project
[注意]
如果您没有指定主机名,则需要三个斜杠 (///) -- 其中两个是协议的 (这里是 file),另一个是路径前的。如果您指定了主机名,那么您必须使用双个斜杠 (//)。
库权限依赖于文件系统的权限。如果用户有读/写权限,他可以从库中检出或者提交到库。
通过 WebDAV 协议 (http://) 访问
要通过 WebDAV 协议访问 Subversion,您必须配置您的 Apache2 web 服务器。您必须在您的 /etc/apache2/apache2.conf 文件中添加下面一小段:
<Location /svn>
DAV svn
SVNPath /path/to/repos
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://servername/svn
[警告]
该密码是以纯文本传输的。如果您担心密码被截取,建议您使用 SSL 加密。相关细节,请参考下一章节。
通过带有 SSL 加密的 WebDAV 协议来访问 (https://)
通过带 SSL 加密的 WebDAV 协议 (https://) 访问也使用 http:// 类似,只是您必须在您的 Apache2 web 服务器中安装和配置数字证书。
您可以安装由证书签署机构如 Verisign 颁发的数字证书。或者,您也可以安装自己签署的证书。
这一步假设您已经在您的 Apache2 web 服务器中安装和配置了数字证书。现在要访问 Subversion 库,请参考上一章节!除了所用协议之外访问方式完全相同。您必须使用 https:// 来访问 Subversion 库。
通过自身协议访问 (svn://)
一旦 Subversion 库被创建,您就可以配置访问控制了。您可以通过编辑 /path/to/repos/project/conf/svnserve.conf 文件来配置访问控制了。例如,要设置认证,您可以在配置文件中反注释下列行:
# [general]
# password-db = passwd
在反注释上面几行之后,您可以在 passwd 文件中维护用户列表。因此编辑同一目录中的文件 passwd 并添加新用户。其语法如下:
username = password
更多细节,请参考该文件。
现在要从本机或不同机器通过 svn:// 自身协议来访问 Subversion,您可以使用 svnserve 命令来运行 svnserver。其语法如下:
$ svnserve -d --foreground -r /path/to/repos
# -d -- daemon mode
# --foreground -- run in foreground (useful for debugging)
# -r -- root of directory to serve
For more usage details, please refer to:
$ svnserve --help
一旦您运行该命令,将启动 Subversion 并在缺省端口 (3690) 监听。要访问项目库,您必须在终端提示符后运行下列命令:
svn co svn://hostname/project project --username user_name
根据服务器的配置,出现密码提示。一旦您认证通过,将从 Subversion 库检出代码。要让本地副本同步项目库,您可以运行 update 子命令。在终端提示符后的命令语法如下所示:
cd project_dir ; svn update
关于 Subversion 子命令的更多细节,您可以参考手册。如为了学到关于 co (checkout) 命令的细节,请在终端提示符后运行下列命令:
svn co help
通过带有 SSL 加密的自身协议 (svn+ssh://) 访问
配置和服务器处理与用 svn:// 方式是相同的。详情请参考上面的章节。这一步假定您已经完成了上面的步骤并用 svnserve 命令启动了 Subversion 服务器。
它也假定 ssh 服务器已经在该机上运行并允许连接。为了确认,请尝试使用 ssh 登录该机器。如果您可以登录,一切就绪。如果不能登录,请在继续之前解决它。
svn+ssh:// 协议使用 SSL 加密来访问 Subversion 库。使用这种方式进行的数据传输是加密的。要访问项目库 (如 checkout),您必须使用下面的命令语法:
svn co svn+ssh://hostname/var/svn/repos/project
[注意]
使用这种访问方式您必须使用全路径 (/path/to/repos/project) 来访问 Subversion 库。
根据服务器配置,它将提示输入密码。在使用 ssh 登录时您必须输入密码。一旦您被认证通过之后,它将从 Subversion 库中检出代码。