svn之svnsync

| | 评论 (2) | 引用通告 (0)

这几天需要将google code的svn在本机做一个同步,主要是为了在内部环境里做集成测试。试了一下svnsync,确实很好用。注意:这个功能是在svn 1.4开始提供的,老的版本请升级。 :)

总体来讲需要两步:
1.初始化一个svnsync的代码库
2.初始化一个同步
3.同步

所有的命令都是svnsync。

初始化本地一个空的svn库:
svnadmin create /home/hd/svn

初始化svnsync同步库:
svnsync init file:///home/hd/svn https://xbaydns.googlecode.com/svn --username huangdong

同步:
svnsync sync file:///home/hd/svn

这里有几点注意:
1.svnsync需要一个hook,如果没有启动这个hook,做init时会提示:
svnsync: Repository has not been enabled to accept revision propchanges;
ask the administrator to create a pre-revprop-change hook
你只需要去建议这个hook就好。不要忘记这个hook要有可执行的权限

2.如果是cp了pre-revprop-change.tmpl,哪么需要做一点改动:
将最后的
if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ]; then exit 0; fi

echo "Changing revision properties other than svn:log is prohibited" >&2
exit 1
删除或注掉,不然也无法执行过去。

3.本机的路径是file:///,也就是三个/,别少写一个哟 :)

最后一点小提示:
svnsync init做了什么?
会将/db/revprops中的0版本文件中加入同涉源库的信息。比如这样的信息会写入:
K 8
svn:date
V 27
2007-10-19T23:50:27.101423Z
K 17
svn:sync-from-url
V 34
https://xbaydns.googlecode.com/svn
K 18
svn:sync-from-uuid
V 36
0f95f432-e13c-0410-b291-c5e6509ff455
K 24
svn:sync-last-merged-rev
V 2
43
END

以上环境为FreeBSD 7.0,subversion 1.4.4。

引用通告 (0)

下面所列出的是引用这篇文章: svn之svnsync 的Blog链接.

这篇文章的引用通告URL: http://mt.opensource.org.cn/cgi-bin/mt/mt-tb.cgi/188

评论 (2)

redeyes 说:

...可惜不支持版本库中子目录的同步。。嘿嘿,有人能patch一下不。。

HD Author Profile Page 说:

从它的其作原理上来讲就明白不能patch了。svn的所有reversion都在根上的,子目录是没有办法记录自己的reversion。换句话来讲,同步到的目的机上reversion都不是连续的了。换句话来讲,这也是比较好防护不允许的人,把整个svn库拿跑的方法 :)

发表评论

关于这篇文章

本页包含由 HD 发表于 November 13, 2007 8:59 PM 的单篇文章.

注意:域名根服务器一台地址发生变化 是本Blog内的上一篇文章.

BIND跟踪与调试 是本Blog内的下一篇文章.

您可以在 主页 上查找最近发表的内容,也可以查看列出在 存档页 上的所有内容.

Powered by Movable Type 4.2-en