Blog
轻松一下?

AppleStar

svnsync: 版本属性改变 被 pre-revprop-change 钩子阻塞(退出代码 255) 没有输出。

一直在用Google Project Hosting 来存一些代码,想要把一个就的project中的内容,转移到一个新的project中,当然,一定要包括版本信息的。

试了几次,最简单的办法是!

svnsync init --username YOURUSERNAME https://YOURNEWPROJECT.googlecode.com/svn https://YOUROLDPROJECT.googlecode.com/svn

然后想备份到本地一份,在wiki里找到了这个

$ svnadmin create localrepos
$ emacs localrepos/hooks/pre-revprop-change # make it 'exit 0'
$ chmod +x localrepos/hooks/pre-revprop-change
$ svnsync init --username USERNAME file:///path/to/localrepos https://myproject.googlecode.com/svn
Copied properties for revision 0.
$ svnsync sync --username USERNAME file:///path/to/localrepos
Committed revision 1.
Copied properties for revision 1.
Committed revision 2.
Copied properties for revision 2.
[...]

于是照着做,但是在init的时候总是出错:

“svnsync: 版本属性改变 被 pre-revprop-change 钩子阻塞(退出代码 255) 没有输出。“

怎么办呢?

1.拷贝文件
cp pre-revprop-change.tmpl pre-revprop-change
2.检查该文件权限,并且有执行的权限,没有就加上
3.修改pre-revprop-change文件的内容,原文中有很多注释行,然后最下面几行是
REPOS="$1"
REV="$2"
USER="$3"
PROPNAME="$4"
ACTION="$5"
if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ]; then exit 0; fi
echo "Changing revision properties other than svn:log is prohibited" >&2
exit 1
我把以上这些行都注释掉了。
4.再次执行svnsync init命令成功,输出信息是
Copied properties for revision 0.

还有最后一句

After you've done this once, you can continue to run the last 'svnsync sync' command to periodically pull down the latest commits and keep your local mirror up-to-date.

每次同步的时候用"svnsync sync"就可以了!

评论   

 
0 #2 Guest 2011-06-12 22:53
很好用,谢谢了。
引用
 
 
0 #1 Guest 2011-06-12 22:52
很好用,谢谢了。
引用
 

提交评论


安全码
刷新