### 快速入门
许多人为“从头到尾”的方式读一本介绍有趣新技术的书感到发愁,这一小节是一个很短的介绍,给许多“实用”的用户一个实战的机会,如果你是一个喜欢通过实验进行学习的用户,以下将告诉你怎么做,相对应,我们给出这本书相关的链接。
如果版本控制或者Subversion和CVS都用到的“拷贝-修改-合并”模型对于你来说是完全的新概念,在进一步阅读之前,你首先要读[第2章 *基本概念*]( "第2章基本概念")。
### 注意
以下的例子假定你有了**svn**这个客户端程序,也有**svnadmin**这个管理程序,你的**svn**也应该在Berkeley DB的基础上进行编译。为了验证这些,运行**svn --version**,确定ra_local模块存在,如果没有,这个程序不能访问`file://`的URL。
Subversion存储所有版本控制的数据到一个中心版本库,作为开始,新建一个版本库:
~~~
$ svnadmin create /path/to/repos
$ ls /path/to/repos
conf/ dav/ db/ format hooks/ locks/ README.txt
~~~
这个命令建立了一个新的目录 `/path/to/repos`,包含了一个Subversion版本库。确定这个目录在本地磁盘上,而*不是*一个网络共享,这个新的目录保存着一些Berkeley DB的数据库文件,你打开后看不到你的已经版本化的文件。更多的版本库创建和维护信息,见第5章[第5章 *版本库管理*]( "第5章版本库管理")。
第二步,建立一些将要导入到版本库的文件与目录,为了以后使用更清楚(见[第4章 *分支与合并*]( "第4章分支与合并")),你的文件应该包括三个顶级子目录,分别是`branches`、`tags`和`trunk`:
~~~
/tmp/project/branches/
/tmp/project/tags/
/tmp/project/trunk/
foo.c
bar.c
Makefile
…
~~~
一旦你有了树形结构和数据你就可以继续了,使用**svn import**导入数据到版本库(见[“**svn import**”一节]( "svn import")部分):
~~~
$ svn import /tmp/project file:///path/to/repos -m "initial import"
Adding /tmp/project/branches
Adding /tmp/project/tags
Adding /tmp/project/trunk
Adding /tmp/project/trunk/foo.c
Adding /tmp/project/trunk/bar.c
Adding /tmp/project/trunk/Makefile
…
Committed revision 1.
$
~~~
现在版本库已经包含你的目录和数据了,注意原先的`/tmp/project`目录没有任何变化;Subversion不管这个,(事实上,你甚至可以任意删除这个目录)。为了处理 版本库的数据,你需要创建一个新的包含数据的“工作拷贝”,一个私人的工作空间。告诉Subversion来“取出”版本库的`trunk`目录:
~~~
$ svn checkout file:///path/to/repos/trunk project
A project/foo.c
A project/bar.c
A project/Makefile
…
Checked out revision 1.
~~~
你现在在`project`目录里有了一个版本库的个人拷贝,你可以编辑你的工作备份中的文件,并且提交到版本库。
-
进入到你的工作备份,编辑一个文件的内容。
-
运行**svn diff**来查看你的修改的标准区别输出。
-
运行**svn commit**来提交你的改变到版本库。
-
运行**svn update**将你的工作拷贝与版本库“同步”。
对于你对工作拷贝可做操作的完全教程可以察看[第3章 *指导教程*]( "第3章指导教程")。
目前,你可以选择使你的版本库在网络上可见,可以参考[第6章 *配置服务器*]( "第6章配置服务器"),学习使用不同的服务器以及配置。
- 第1章介绍
- Subversion的历史
- Subversion的特性
- Subversion的架构
- 安装Subversion
- Subversion的组件
- 快速入门
- 第2章基本概念
- 版本模型
- Subversion实战
- 摘要
- 第3章指导教程
- 导入
- 修订版本: 号码、关键字和日期,噢,我的!
- 初始化的Checkout
- 基本的工作周期
- 检验历史
- 其他有用的命令
- 摘要
- 第4章分支与合并
- 使用分支
- 在分支间拷贝修改
- 常见用例
- 转换工作拷贝
- 标签
- 分支维护
- 摘要
- 第5章版本库管理
- 版本库的创建和配置
- 版本库维护
- 添加项目
- 摘要
- 第6章配置服务器
- 网络模型
- svnserve,一个自定义的服务器
- httpd,Apache的HTTP服务器
- 支持多种版本库访问方法
- 第7章高级主题
- 属性
- Peg和实施修订版本
- 外部定义
- 卖主分支
- 本地化
- Subversion版本库URL
- 第8章开发者信息
- 使用API
- 进入工作拷贝的管理区
- WebDAV
- 使用内存池编程
- 为Subversion做贡献
- 第9章Subversion完全参考
- svn add
- svn blame
- svn cat
- svn checkout
- svn cleanup
- svn commit
- svn copy
- svn delete
- svn diff
- svn export
- svn help
- svn import
- svn info
- svn list
- svn log
- svn merge
- svn mkdir
- svn move
- svn propdel
- svn propedit
- svn propget
- svn proplist
- svn propset
- svn resolved
- svn revert
- svn status
- svn switch
- svn update
- svnadmin
- svnadmin create
- svnadmin deltify
- svnadmin dump
- svnadmin help
- svnadmin hotcopy
- svnadmin list-dblogs
- svnadmin list-unused-dblogs
- svnadmin load
- svnadmin lstxns
- svnadmin recover
- svnadmin rmtxns
- svnadmin setlog
- svnadmin verify
- svnlook
- svnlook author
- svnlook cat
- svnlook changed
- svnlook date
- svnlook diff
- svnlook dirs-changed
- svnlook help
- svnlook history
- svnlook info
- svnlook log
- svnlook propget
- svnlook proplist
- svnlook tree
- svnlook uuid
- svnlook youngest
- svnserve
- svnversion
- mod_dav_svn Configuration Directives
- 附录A.Subversion对于CVS用户
- 目录的版本
- 更多离线操作
- 区分状态和更新
- 分支和标签
- 元数据属性
- 冲突解决
- 二进制文件和转化
- 版本化的模块
- 认证
- 转化CVS版本库到Subversion
- 附录C.WebDAV和自动版本化
- 自动版本化交互性
- Subversion和DeltaV
- 术语表