Home | 简体中文 | 繁体中文 | 杂文 | Github | 知乎专栏 | Facebook | Linkedin | Youtube | 打赏(Donations) | About
知乎专栏

120.3. 使用Subversion

120.3.1. Initialized empty subversion repository for project

svn co svn://127.0.0.1/project
cd project
mkdir trunk
mkdir tags
mkdir branches
svn ci -m "Initialized empty subversion repository in your_project"
			

120.3.2. ignore

svn propset svn:ignore [filename] [folder]
$ svn propset svn:ignore 'images' .
$ svn ci -m 'Ignoring a directory called "images".'
			
$ svn propset svn:ignore '*' images
$ svn ci -m 'Ignoring a directory called "images".'
			
$ svn export spool spool-tmp
$ svn rm spool
$ svn ci -m 'Removing inadvertently added directory "spool".'
$ mv spool-tmp spool
$ svn propset svn:ignore 'spool' .
$ svn ci -m 'Ignoring a directory called "spool".'
			

.ignore

svn propset svn:ignore -F .cvsignore .
svn propset -R svn:ignore -F .svnignore .
			

120.3.3. 关键字替换

Date
	 这个关键字保存了文件最后一次在版本库修改的日期,看起来类似于$Date: 2012-08-06 17:43:09 +0800 (Mon, 06 Aug 2012) $,它也可以用LastChangedDate来指定。
Revision
	 这个关键字描述了这个文件最后一次修改的修订版本,看起来像$Revision: 446 $,也可以通过LastChangedRevision或者Rev引用。
Author
	 这个关键字描述了最后一个修改这个文件的用户,看起来类似$Author: netkiller $,也可以用LastChangedBy来指定。
HeadURL
	 这个关键字描述了这个文件在版本库最新版本的完全URL,看起来类似$HeadURL: https://svn.code.sf.net/p/netkiller/svn/trunk/Docbook/Version/section.version.svn.xml $,可以缩写为URL。
Id
	 这个关键字是其他关键字一个压缩组合,它看起来就像$Id: section.version.svn.xml 446 2012-08-06 09:43:09Z netkiller $,可以解释为文件calc.c上一次修改的修订版本号是148,时间是2006年7月28日,作者是sally。
			
$ cat weather.txt
$Id: section.version.svn.xml 446 2012-08-06 09:43:09Z netkiller $

$ svn propset svn:keywords "Id" weather.txt
property 'svn:keywords' set on 'weather.txt'

$ cat weather.txt
$Id: section.version.svn.xml 446 2012-08-06 09:43:09Z netkiller $
			

设置多个关键字

$ svn propset svn:keywords "Author HeadURL Id Revision" -R *.php
			
svn -R propset svn:keywords -F .keywords *
			

120.3.4. lock 加锁/ unlock 解锁

$ svn lock -m "LockMessage" [–force] PATH

$ svn lock -m “lock test file“ test.php
$ svn unlock PATH
			

120.3.5. import

svn import [PATH] URL
svn export URL [PATH]
			

120.3.6. export 指定版本

svn log file
svn export -r rxxxxx file
or
svn export -r rxxxxx file newfile
svn ci -m "restore rxxxxxx"
			

120.3.7. 修订版本关键字

HEAD

    版本库中最新的(或者是“最年轻的”)版本。
BASE

    工作拷贝中一个条目的修订版本号,如果这个版本在本地修改了,则“BASE版本”就是这个条目在本地未修改的版本。
COMMITTED

    项目最近修改的修订版本,与BASE相同或更早。
PREV

    一个项目最后修改版本之前的那个版本,技术上可以认为是COMMITTED -1。
			
$ svn cat -r PREV filename > filename
$ svn diff -r PREV filename
			

120.3.8. 恢复旧版本

svn没有恢复旧版本的直接功能,不过可以使用svn merge命令恢复。比如说当前HEAD为2,而我要恢复成1版本,怎么做?

用svn merge:

			
svn update
svn merge --revision 2:1 svn://localhost/lynn
svn commit -m "restore to revision 1"
			
			

svn merge --r HEAD:1 svn://localhost/lynn