为了展示功能,先要一个具有写权限的 SVN 仓库。如果想尝试这个范例,你必须复制一份其中的测试仓库。
比较简单的做法是使用一个名为 svnsync 的工具。较新的 Subversion 版本中都带有该工具,它将数据编码为用于网络传输的格式。
要尝试本例,先在本地新建一个 Subversion 仓库:
$ mkdir /tmp/test-svn
$ svnadmin create /tmp/test-svn
然后,允许所有用户修改 revprop —— 简单的做法是添加一个总是以 0 作为返回值的 pre-revprop-change 脚本:
$ cat /tmp/test-svn/hooks/pre-revprop-change
#!/bin/sh
exit 0;
$ chmod +x /tmp/test-svn/hooks/pre-revprop-change
现在可以调用 svnsync init 加目标仓库,再加源仓库的格式来把该项目同步到本地了:
$ svnsync init file:///tmp/test-svn http://progit-example.googlecode.com/svn/
这将建立进行同步所需的属性。可以通过运行以下命令来克隆代码:
$ svnsync sync file:///tmp/test-svn
Committed revision 1.
Copied properties for revision 1.
Committed revision 2.
Copied properties for revision 2.
Committed revision 3.
...
别看这个操作只花掉几分钟,要是你想把源仓库复制到另一个远程仓库,而不是本地仓库,那将花掉接近一个小时,尽管项目中只有不到 100 次的提交。
Subversion 每次只复制一次修改,把它推送到另一个仓库里,然后周而复始——惊人的低效,但是我们别无选择。
REF:http://cwiki.ossez.com/pages/viewpage.action?pageId=7045944