Subversion(SVN)使用入门

Subversion(SVN)使用入门

SVN是集中式的信息共享系统。它使用拷贝-修改-合并 方案来解决文件共享问题。其中服务端的SVN文件库称为版本库。

Subversion版本库URL

file:/// 直接版本库访问(本地磁盘)

http:// 通过配置Subversion的Apache服务器的WebDAV协议

https:// 与http://相似,但是包括SSL加密。

svn:// 通过svnserve服务自定义的协议

svn+ssh:// 与svn://相似,但通过SSH封装。

若URL中包含空格或ASCII大于128的字符需要加上双引号。

SVN使用

首先需要将服务器上的项目文件拷贝到本地,使用checkout参数:

$ svn checkout http://svn.example.com/repos/calc
A    calc/Makefile
A    calc/integer.c
A    calc/button.c
Checked out revision 56.

$ ls -A calc
Makefile  integer.c  button.c  .svn/

附加目录.svn/保存了SVN需要的一些信息。

修改文件之后可以使用commit参数提交修改:

$ svn commit button.c -m "Fixed a typo in button.c."
Sending        button.c
Transmitting file data .
Committed revision 57.

如果需要将服务器上文件的变化同步到本地,可使用update参数:

$ pwd
/home/sally/calc

$ ls -A 
.svn/ Makefile integer.c button.c

$ svn update
U    button.c
Updated to revision 57.

版本库每次接受新的提交则进入一个新的状态,称为一次修订。每个修订都是一个文件树的快照。修订是针对整个目录树的,版本号从0空目录开始。

在与版本库比较后本地工作文件可能处于以下四种状态之一:

未修改且是当前的

文件在工作目录里没有修改,在工作修订版本之后没有修改提交到版本库。svn commit操作不做任何事情,svn update不做任何事情。

本地已修改且是当前的

**在工作目录已经修改,从基本修订版本之后没有修改提交到版本库。本地修改没有提交,因此svn commit会成功提交,svn update不做任何事情。

未修改且不是当前的了

**这个文件在工作目录没有修改,但在版本库中已经修改了。这个文件最终将更新到最新版本,成为当时的公共修订版本。svn commit不做任何事情,svn update将会取得最新的版本到工作拷贝。

本地已修改且不是最新的

**这个文件在工作目录和版本库都得到修改。一个svn commit将会失败,这个文件必须首先更新,svn update命令会合并公共和本地修改,如果Subversion不可以自动完成,将会让用户解决冲突。

svn status可以告诉你当前工作文件的状态。以下为四种返回状态码:

A item

  • 预定加入到版本库的文件、目录或符号链的item。

C item

  • 文件item发生冲突,在从服务器更新时与本地版本发生交迭,在你提交到版本库前,必须手工的解决冲突。

D item

  • 文件、目录或是符号链item预定从版本库中删除。

M item

  • 文件item的内容被修改了。

基本的工作周期

典型的工作周期是这样的:

更新你的工作拷贝

  • svn update

做出修改

  • svn add

  • svn delete

  • svn copy

  • svn move

检验修改

  • svn status

  • svn diff

可能会取消一些修改

  • svn revert

解决冲突(合并别人的修改)

  • svn update

  • svn resolved

提交你的修改

  • svn commit
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值