SVN you should know

SVN 是 Subversion 的缩写,一个开源的版本管理工具,类似于 CVS 和 Visual Studio 的 Source Safe。不过据它的作者称是因为忍受不了 CVS 的缺点所写的,可能会比 CVS 表现好一点,因为我只有在 check out 某些开源代码时候才会用到 CVS,并不经常,所以只是猜测。不过肯定是比 Source Safe 表现要好,因为两者的理念是不同的,Visual Source Safe 管理小型项目还可以,是不适合管理多用户的大项目的,再说,Source Safe 也只能在 VS 里面用,而 SVN 的客户端有 Linux 和 Window 的版本。顺便提一下的是,WIN 下有种最流行的 SVN 客户端就是集成在右键菜单的一个小乌龟,很有意思的。

SVN 有非常好的使用文档,相比其它的开源项目来说,SVN 的中文化也做的很好,有专门的中文站,可以搜一下。SVN book 介绍的相当全面,但是,读完那么长的文档也没有必要。我这里就介绍一些常用且是最常用到的命令(Linux 下,Win 下就不说了,都是 GUI 操作)。

建立版本库:svnadmin create /data/svnpool
这是指定版本库存放的位置,貌似必须是一个绝对路径,建立好以后里面会建立起一些配置和数据库的文件。

指定编辑器:export EDITOR=vim
因为每次的版本操作都要添加一些信息在 log 里,把 EDITOR 放在环境变量里可以使用自己熟悉的编辑器来编辑这些信息。这句话经常放在 .bashrc 里。

导入项目:svn import file:///data/svnpool
在当前目录下的所有目录和文件都会导入到版本库里。

列表查询:svn list file:///data/svnpool
一般情况下都要先查询一下某个目录存在不存在才去导出。

导出项目:svn co file:///data/svnpool/project
这时候会在当前目录下建立一个 project 的目录,里面存有 SVN 的信息。

更新项目:svn update
使当前目录下的所有文件和目录版本与版本库中保持一致。

查看不同:svn diff
查看当前目录下的所有文件和目录与版本库中有那些不同,也可以加上版本参数 -r revision1:revision2 查看两个版本有什么不同。

添加文件和目录到当前项目:svn add subdir/file
把当前目录下的 subdir/file 添加到当前目录对应的项目中去。

删除、移动或复制当前项目中的目录和文件: svn rm/mv/cp ...
把某个文件或目录更改名字、复制或从版本库中删除。

提交更改:svn commit
把更改后的文件提交到版本库中形成新的版本。

在初始导出和导入的时候,可能需要给出 URL,主要有几种格式,file:///, http://, svn://, svn+ssh://user@host。当项目已经导出时候,就不需要打路径名了,有可能需要密码,如果验证的话。

这些是最常用的命令,像其它的一些命令,比如 merge 之类的,用到时候再查 svn book 和 man page 也不晚。版本控制很有用的,比如自己平常写的代码,放到版本库里就比较好查询和撤销修改,而不用每次都保存个备份。而且增量修改时当代码发生错误时候可以很快定位更改在哪里,找到错误原因。其实所有文档都可以放在 SVN 库里的,只是某些文件类型不好做 diff 罢了。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注