发现svn的代码有更新,却忘了与上次对比。于是svn与上一版本对比的时候就出现了标题的错误:
svn: E220001: Unreadable path encountered; access denied
其实解决方法很简单,在conf/svnserve.conf中。找到anonaccess = read这一行,(默认是注释掉的)
加入一行 anonaccess = none
再试一下,就会发现正常了。
这应该算是svn的BUG了。拜托,就算你不支持anon这样的匿名用户,你好歹默认为NONE这种值你总要存在吧。不存在 就直接造成无法访问,没权限了。
windows和linux有一点不同,即。。。文件名是否区分大小写。于是在SVN里就有了这么纠结的事情,如果将文件名即时改名大小写,SVN会认为这是同一个文件,而不会加到SVN的库里。如果有改动,再提交,我日。尼玛,其他 客户端就会说文件不一样。会报标题出现的错误 ,肿么办??
原文标题来自的文章是出自这里:http://andrew.hedges.name/blog/2009/01/25/how-to-recover-from-checksum-mismatch-errors-in-svn
全英文,有四屏哦(光标回到最上面,按四次空格 可以到底,称之为四屏),如果你兴趣不大,我这里有一个简化版。。。
1、将出错的目录,重新checkout出来到一个新的目录
2、将原svn中的该目录删除
3、将新checkout的目录拷过去,到项目目录里
4、改正用户组权限。
Over了。就是这么简单。。。。
英文是这样说的:
- Check out the latest revision of the corrupted directory into a temporary directory
- Delete the munged SVN revision files
- Copy the correct SVN revision files into the working directory
Over。。。真不难哦
来自:http://www.zeali.net/entry/678
作者:zeal
10. XXXX项目-改版 // 你用一次也就罢了,需要整个项目期间提交的日志都是这句话嘛...
9. 修改 // 如果版本提交不是做修改,莫非骗提交率来了?
8. BUG修改 // 是不是还要先提交一个版本叫做“BUG生成”?
7. 修改BUG // LS的,猿粪呐!~
6. 测试 // 册那...
5. test // 猿粪,又见猿粪
4. 版本更新 // 俺又不是siri,发出这种让人产生联想的指令干嘛,讨厌~
3. update // 你就算说英文俺也变不成siri
2. publish // 小样,会的词还挺多啊!
1. svn // 靠.......
---------
挺有意思,不过,我大部分还是习惯将主要更新内容扔上去,但如果一次上传过多的时候就没办法写了。一个一个的上传也不是个办法。。。
之所以要转这一篇文章,是在于有人在THINKINLAMP的googlegroup里提问,说是怎么在svn提交的时候对phpdoc进行检查,需要让他们强制写注释,否则就不让他们提交,于是我说了是在老王的博客上。但后来我看了一下老王新的博客,huoding.com,这篇文章不在(没有迁移到新的博客中)。所以我重新在本地复制了一下他在百度博客里的文章。
原文来自:http://hi.baidu.com/thinkinginlamp/blog/item/17476d22661ee6a94623e8d7.html
PHP代码审计方面的软件越来越多了,PHPCheckstyle算是最近比较活跃的一个。通过SVN钩子脚本的方式来调用PHPCheckstyle,可以强制代码必须符合预先设定的编码标准(比如PEAR编码标准),有助于在多人合作项目中提高代码整体质量。
PHPCheckstyle的设置:
安装真的没什么可说的,属于接插即用型的,唯一需要设置的就是config目录下的配置文件:缺省使用的是default.cfg.xml,你可以编辑它,按照官方文档适当的增减规则。不过PHPCheckstyle项目诞生时间短,不够稳定,截至0.8版本为止还有不少问题,使用前最好逐条规则进行测试。
最简单的运行方法如下:
php run.php --src /path/to/file
这样的话会生成相关的html文档,如果你想直接输出的话,请使用:
php run.php --format console --src /path/to/file
更多选项可以自己看帮助(php run.php就可以查看相关帮助)
Subversion钩子脚本:
下面设置钩子脚本,具体点说是前置钩子,也就是:pre-commit,通过钩子检查后才被允许提交到版本库。只有添加或更新的文件是需要检查的,如果是 要删除的文件,则没有必要检查;还有一个问题,PHPCheckstyle只能检查具体文件的内容,而在提交之前,我们想要检查的文件还不存在,所以我们 得生成一个临时文件,检查完再删除,另外,在生成文件时要注意其唯一性,免得多用户一起提交时发生冲突,注意事项了解的差不多了,可以写钩子脚本了:
代码(at pastebin.com):
01 #!/bin/bash
02
03 REPOS="$1"
04 TXN="$2"
05
06 PHP="/usr/local/php/bin/php"
07 SVNLOOK="/usr/bin/svnlook"
08
09 RUNSCRIPT="/path/to/run/php/script"
10
11 CHANGED=`$SVNLOOK changed -t "$TXN" "$REPOS" | grep '^[U|A]' | awk '{print $2}'`
12
13 for FILE in $CHANGED; do
14 if [[ "$FILE" =~ \.php$ ]]; then
15 TEMPFILE=`mktemp`
16 $SVNLOOK cat -t "$TXN" "$REPOS" "$FILE" > $TEMPFILE
17 MESSAGE=`$PHP $RUNSCRIPT --format console --src $TEMPFILE | head -n -2`
18 if [ ! -z "$MESSAGE" ]; then
19 rm -rf $TEMPFILE
20 echo "$MESSAGE" | sed -e "s|$TEMPFILE|$FILE|" 1>&2
21 exit 1
22 fi
23 rm -rf $TEMPFILE
24 fi
25 done
关于Shell,如果有不清楚的可以自己搜索一下,网上有很多类似的文章。
钩子脚本还可以做很多事情,比如核对PHP脚本语法(php -l),而且通过管道符不用生成临时文件:
MESSAGE=`$SVNLOOK cat -t "$TXN" "$REPOS" "$FILE" | $PHP -l`
运行后,不用判断MESSAGE是否为空,而是根据退出状态来判断脚本是否有语法问题:
if [ $? -ne 0 ]
PHPCheckstyle配置和使用多少还是有点别扭,有机会试试PHP_CodeSniffer,配置钩子脚本更简单。
BTW:发现一个PHP Commit Hooks项目,有点意思,可以看看。
-------
---EOF---
最后,我也下载一份PHP COMMIT HOOKS项目 ,有点意思,可以少写很多了
刚才在看sae的文档时,发现他在介绍如何部署代码时提到了editplus,并说,editplus可以用TSVN来部署文件。
这时候我觉得纳闷,什么时候editplus支持SVN了?
然后找到了editplus的官网,找到了what's new:
![](data:image/png;base64,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)
原来,从3.30开始就支持了。
不过TSVN必须要先安装小乌龟才OK,HOHO,有兴趣的朋友是可以尝试了。
反正我现在用PHPstorm,什么都带了。
自从用了phpstorm,腰不酸腿不疼了。