为什么有些文件不能从svn服务器上更新下来

为什么有些文件不能从svn服务器上更新下来,第1张

这个问题,对于刚使用SVN的用户都会遇到

首先,你得到本地的SVN项目根目录上,进行 Clean up 操作,然后在更新你本地地整个SVN项目,如果没有任何文件更新下来,你右键选择 Check for modifications 命令进行操作,会出现一个对话框你只要点击 Check repository 一会就会出现很多文件,这时你就能看到SVN服务器上有没有你想上传的文件在服务器上

要是有,就右键更新下来,要是没有,你就可以上传新文件到SVN服务器上了

一个最直接的想法就是利用google的cpplint对代码进行一些coding

style的检查,让小组内成员的代码风格在一定程度上得到统一。并且用于版本控制的TortoiseSVN能够方便的设置pre-commit

hook,以便在每次提交代码前运行cpplint。

考虑到初步的实验性质,以及cpplint带来的冲击,所以这个检查暂时只能做到client-end。

事实证明,即使是这样,在配置的过程也掉了几次坑,大致如下:

TortoiseSVN的pre-commit hook只支持直接运行EXE或者Batch脚本。对于python脚本,即使你设置了文件关联(即双击能运行),运行Hook时也会提示 %1不是有效的Win32程序

解决方法是使用形如 C:\python27\pythonexe "D:\StaticCodeAnalysis\run_cpplintpy"

的commandline。两个路径都要是full path。

run_cpplintpy

是我写的中间脚本,它会首先做一些处理,设置一些参数,然后调起 cpplintpy

TortoiseSVN的pre-commit hook会在调用脚本的时候(这里是run_cpplintpy)传递4个参数, 它传递的

第一个参数是一个临时文件路径,这个临时文件包含了此次发生改动的文件或者文件夹列表。

这是一个很重要的信息,因为现在是在client-end部署,所以网上找到的那些使用 svnlook changed

的获取文件改变的情况并不适用。

改动列表包含了改动的文件夹,以及被删除的文件。明显不能对他们做cpplint。

脚本通知hook检查失败是通过简单的检查exit()调用的返回值,为了方便,修改cpplint,让他到处他的main,直接在run_cpplint中调用cpplintmain。

cpplint检查失败之后恰好会返回sysexit(non_zero),通知hook脚本失败。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 为什么有些文件不能从svn服务器上更新下来

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情