本文档旨在描述 Apache™ Subversion® 的 1.7.x 系列。如果您运行的是其他版本的 Subversion,强烈建议您访问 https://svnbook.subversion.org.cn/ 并查阅适合您 Subversion 版本的文档。
“请确保您的座椅靠背处于完全直立位置,并且您的餐桌已收起。空乘人员,准备起飞……。”
以下是一个快速教程,将引导您完成一些基本的 Subversion 配置和操作。完成本教程后,您应该对 Subversion 的典型用法有一个基本的了解。
注意 | |
---|---|
本附录中使用的示例假设您已在类 Unix 操作系统上准备好了 svn(Subversion 命令行客户端)和 svnadmin(管理工具)。(本教程也适用于 Windows 命令行提示符,假设您进行了一些明显的调整。)我们还假设您使用的是 Subversion 1.2 或更高版本(运行 |
Subversion 将所有版本控制的数据存储在一个中央仓库中。首先,创建一个新的仓库
$ cd /var/svn $ svnadmin create repos $ ls repos conf/ dav/ db/ format hooks/ locks/ README.txt $
此命令将在目录 /var/svn/repos
中创建一个 Subversion 仓库,如果 repos
目录不存在,则会创建该目录。该目录包含(除其他外)一组数据库文件。如果您查看内部,您将看不到您的版本控制文件。有关仓库创建和维护的更多信息,请参见 第 5 章,仓库管理。
Subversion 没有““项目””的概念。仓库只是一个虚拟的版本控制文件系统,一个可以容纳任何您想要的东西的大树。一些管理员更喜欢在一个仓库中只存储一个项目,而另一些管理员更喜欢通过将项目放置在不同的目录中,在一个仓库中存储多个项目。我们在 名为“规划您的仓库组织”的部分 中讨论了每种方法的优缺点。无论哪种方式,仓库只管理文件和目录,因此由人类来解释特定的目录作为““项目””。因此,虽然您可能会在本书中看到对项目的引用,但请记住,我们始终只谈论仓库中的某个目录(或目录集合)。
在本例中,我们假设您已经拥有某种项目(一组文件和目录),您希望将其导入到您新创建的 Subversion 仓库中。首先,将您的数据组织到一个名为 myproject
(或您想要的任何名称)的单个目录中。由于 第 4 章,分支和合并 中解释的原因,您的项目的树结构应该包含三个名为 branches
、tags
和 trunk
的顶层目录。 trunk
目录应该包含所有数据,而 branches
和 tags
目录应该为空
/tmp/
myproject/
branches/
tags/
trunk/
foo.c
bar.c
Makefile
…
Subversion 并不真正需要 branches
、tags
和 trunk
子目录。它们仅仅是一个流行的约定,你很可能在以后会用到它们。
准备好数据树后,使用 svn import 命令将其导入到版本库中(参见 “将数据导入版本库”部分)。
$ svn import /tmp/myproject file:///var/svn/repos/myproject \ -m "initial import" Adding /tmp/myproject/branches Adding /tmp/myproject/tags Adding /tmp/myproject/trunk Adding /tmp/myproject/trunk/foo.c Adding /tmp/myproject/trunk/bar.c Adding /tmp/myproject/trunk/Makefile … Committed revision 1. $
现在版本库包含了这个数据树。如前所述,你无法通过直接查看版本库来看到你的文件;它们都存储在一个数据库中。但是版本库的虚拟文件系统现在包含一个名为 myproject
的顶级目录,该目录包含你的数据。
请注意,原始的 /tmp/myproject
目录保持不变;Subversion 并不了解它。(实际上,你甚至可以删除该目录。)要开始操作版本库数据,你需要创建一个新的 “工作副本”,它是一个私有的工作区。请 Subversion “检出” 版本库中 myproject/trunk
目录的工作副本。
$ svn checkout file:///var/svn/repos/myproject/trunk myproject A myproject/foo.c A myproject/bar.c A myproject/Makefile … Checked out revision 1. $
现在,你拥有了版本库中一部分数据的个人副本,它位于一个名为 myproject
的新目录中。你可以编辑工作副本中的文件,然后将这些更改提交回版本库。
进入你的工作副本并编辑文件的内容。
运行 svn diff
以查看更改的统一差异输出。
运行 svn commit
将文件的最新版本提交到版本库。
运行 svn update
使你的工作副本 “与版本库同步”。
要全面了解工作副本的所有功能,请阅读第 2 章,基本用法。
此时,您可以选择通过网络让其他人访问您的版本库。请参阅第 6 章,服务器配置,了解可用的不同类型的服务器进程以及如何配置它们。