??xml version="1.0" encoding="utf-8" standalone="yes"?>
Subversion 客户?/SPAN> 配置
软g环境Q?/SPAN>TortoiseSVN-
l 如何下蝲CVS ?checkout
如图?/SPAN>URL of repository 输入服务器项目名U就好。(?/SPAN>IE也能看啦Q?BR>
l 如何q加新文件或者目?/SPAN> ?add
Subversion是递归q加的,省去?/SPAN>cvs?/SPAN>pythonq一步?/SPAN>
q里的追加仅仅是在本地打标记Q别忘了提交Q!Q?BR>
l 如何提交修改 ?commit
英文?/SPAN>CVS一P毕竟q?/SPAN>2个Y仉有同一个“老爸?/SPAN>(Karl)Q相q也自然?/SPAN>
是不是比CVS友好Q这?/SPAN>Clientq不错么Q? 呵呵 但这q不?/SPAN>Subversion真正的强V?BR>
l 如何撤销操作 ?clean up / revert
如果你做了不该做的事?/SPAN>?-_-! 那么恢复很重要了(当然了,q都是客L(fng)的,如果已经提交了,?/SPAN>?/SPAN>q着挨板子吧Q?/SPAN>
Clean ?/SPAN> Revert 很相q。都是撤销提交前进行的所有修攏V可以对目录作?BR>
l 如何明确目录下的变更?/SPAN> ?status
右键
l 如何删除一个文件或者目?/SPAN> ?delete
q就不说了,Delete q个东东是Q?SPAN style="COLOR: red">别忘?/SPAN> 提交Q?/SPAN>
l 如何察看一个文件的或者目录的修改记录 --- log
是?/SPAN> history 了。?/SPAN>Show Log好?/SPAN>
l 如何比较文g或者不同版本之间的比较 ?diff
如上图,得到历史版本后,可以直?/SPAN>diff了,q个Client自带?/SPAN>Compare功能。可能不?/SPAN>BC强吧Q不定?/SPAN>
l 明确提交文g时的用户权限验证
写个代码 Ҏ(gu)么。都是体力啊Q被盖了Q可不是气的嘴都歪了。所?/SPAN> 权限 理也就应历史z流Q出现在Subversion中。这个图是提交时的密码输入。具体的讄请参?/SPAN>《subversion之Apache配置?/SPAN>Q?/SPAN>
Subversion自带了一个小型的server叫做 svnserve 但是他不能完成复杂的权限目录{的理Q因此我们这ơ借用 ?/SPAN>XX ?/SPAN>Apache ServerQ?/SPAN>
W四?参?/SPAN>
《?/SPAN>Subversionq行版本控制?/SPAN> Orilly 中文
?/SPAN>Apache Securty?/SPAN> HTMLPage ApacheGroup English
kino
kinoviti@gmail.com
QQ:23493713
软g版本Qsubversion1.2.3
apache-server 2.0.55
旉Q?006-01-26
AuthorQKino
***************************************
安装到Apache
Subversion作ؓ(f)CVS的次代作品,Kerl真的是煞费苦心啊。现在我们就来看看如何配|它到ApacheServer?BR>Subversion本n有一个自带的server是bin下的cvsserve Q通过svn://XXXXq行讉K。同时支持ssh配置。但是弱点就是这个server对于权限和用L(fng)理很弱,对于大型目Q必d他挂在ApacheServerq样的重萨巴上?BR>[svnserve的用h仉要修改conf下的2个文Ӟ自己看看Q很单都有注释的Q这里不说了]
你应该得到subversion的二q制安装版,比较E_的是1.2.3版本Q这个版本对于apacheserver最低的版本要求?.0.45 所以我们可以去apache官方站点下蝲2.0.55版本Q最新已l是2.5了吧Q。分别安?个Y件?BR>ok,软g环境好了Q那来q接他们吧?BR>
数据库连接:(x)
Q如果你懒得改,那么安装软g的时候就一定要先安装ApacheServer,Subversion安装的时候会(x)自动修改Q?BR>subversion可以被看作是一个特D的数据库(事实上也是Q呵呵FSFS 和伯克利DBQ。那么就需要让Apache能够讉Ksubversion的数据库Q这qCmodule概念Q我们便来修改httpd.conf文g?BR>1。打开Apache自带的DAVmoduleQ去掉“LoadModule dav_module modules/mod_dav.so”前?
2。追加访问subversion用的moduleQ(subversion安装目录bin下自带有q?个modulesQ?BR>LoadModule dav_svn_module "C:/Program Files/Subversion/bin/mod_dav_svn.so"
LoadModule authz_svn_module "C:/Program Files/Subversion/bin/mod_authz_svn.so"
权限讄Q?/FONT>
比较ȝ的东西来了。我们需要配|?个东西:(x)
1。在httpd.conf中追?lt;Location > 。例子如下:(x)
#配置subversion用户权限
<Location /mysvn>
DAV svn
# http中输?nbsp;"/mysvn/Parser" URL will map to a repository F:/SVN/repository/Parser
SVNParentPath F:/SVN/repository/
#声明 accessfilepolicy 文gQ目的是认Group分类和目录的讉K权限
AuthzSVNAccessFile F:/SVN/commonconf/accessfilepolicy
# only authenticated users may access the repository
# Require valid-user
# For any operations other than these, require an authenticated user.
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
# 声明userauthofapachedav文gQ其内容是各个用L(fng)md5密码
AuthType Basic
AuthName "HFSVB AuthName"
AuthUserFile F:/SVN/commonconf/userauthofapachedav
</Location>
2。accessfilepolicy 文gQ放在项目的conf目录下,也可随意Q?如下Q?BR>#this file communicate with httpd file's Location Tag ,per file per Tag
#like svnserve.conf here section is [repos-name:path] or [path]
#if you use SVNParentPath in httpd.conf then here you MUST use repository name
#if you use SVNPath ,no problem
#r read w write
#don't have any right to parser:/src/ of user guest
#[repository名字Qpath]
#[parser:/src/]
#guest =
[groups]
administrator = admin
developer = tester
everyone = admin, tester
#default no one has right to repos,so use * to everyone
[parser:/] #根目录下所有的文g和目录,又承关p?BR>* = r #默认的所有h都有 L?BR>@developer = rw #q就表明只有developerQtesterQ才有读写权?BR>[ 具体的文件和内容可查?Orilly的《用Subversionq行版本控制?BR>讉K http://www.subversion.org.cn/svnbook/1.1/index.html ]
3。userauthofapachedav文g
admin:$apr1$A45.....$WQ0RCK61I/PO4gSKt.kK60
q个文g是如何生成的呢,使用apache 的bin目录下的htpasswd.exe。用法可以参?--help的帮助?BR>q里l一个例子吧
>htpasswd -cm C:/userauthofapachedav admin
>input password:admin123
>again : admin123
具体的英文忘了。呵呵不q很单的?BR>
好了Q就q么单。祝大家开心。这只是入门。具体的操作q要靠各位自己去感受?BR>
关于如何讄subversion的项目库Q上Ҏ(gu)到的orilly的书有记蝲?BR>
软g版本Q?/SPAN>Parasoft C++ Test 6.5
旉Q?005-11-23
AuthorQKino
********************************
一.介绍一下C++Test吧(q一部分请允许我ctrl + c/v Q?/STRONG>
是单元测试和静态分析工P自动试C?/SPAN>CQ+cd、功能或lgQ而无需~写单个试实例、测试驱动程序或桩调用。只需点击按钮Q?/SPAN>C++Test即会(x)采用业内~码标准执行代码的静态分析,试代码构造(白盒试Q,试代码功能性(黑盒试Q,q保持代码完整性(回归试Q。可以E行在Windows 2000/XP ?/SPAN>Linux ?/SPAN>Solaris 7, 8, 9q_之上。她的主要功能可以参见下边的链接|页Q?/SPAN>
http://www.superinst.com/cn/products/software_engineering/unit_testing/parasoft/ctest.html
q里我想说明的不?/SPAN>C++Test有多么好用,而是要说明她内置?/SPAN>RuleWizard™定制编码机能。那么什么才?/SPAN>RuleWizard呢?他到底能q什么?
?RuleWizard
C++Test内置?/SPAN>300多个静态测试项Q一般的情况下其实也够用了。但是如果有Ҏ(gu)的测试要求,动辄几十K的代码,用眼睛看Q脑子想Q太辛苦Q也不“安全”。那么?/SPAN>rulewizard定制自己的规则还是很有用的?/SPAN>
我们首先要明,rulewizard定制的是 不成?/STRONG> 的情c(din)也是应该被排除的?/SPAN>
Rule的创建有2U方式,一U是手工写规则,另一U是写入需要剔除的代码Q让rulewizardd你生成规则(最好别用,弱弱?/SPAN>autocreateQ。我q里主要重点攑֜自己写规则方面?/SPAN>
Rulewizard的界面如下图Q?/SPAN>
*******
?。RuleWizard界面
双的就是我们写的规则?/SPAN>
那么我们先来大概的介l一?/SPAN>rulewizard定义的基本组成部分吧。(实在不太?x)翻译,那么沿用英文名字了Q请大家多多包涵Q?/SPAN>
NodeQ规则的基本l成部分Q通过Node你可以很清楚的知道它的功能。比如表辑ּa=b、变量的cd试。。。分为:(x)
parentNodeQ规则中的主分支Node或者次分支的主Node。内容可以是表达式、变量、函数等
childNodeQ规则的l成单元?/SPAN>
CommandsQ?/SPAN>用来?/SPAN>Node?/SPAN>Nodes之间建立兌关系。Ş象一点就是点中一?/SPAN>Node然后右键昄出的快捷菜单的上半部分。如下图Q?/SPAN>
介绍一下主要的Command
Collector:集合。这个概忉|像数学中的集合而不?/SPAN>Java中的q义集合。满一定条件的数据或者方法或者变量的全体。比如,所有被声明q的变量Q?SPAN style="COLOR: red">如下?BR>
?
isDecl是用来返回前边的node是不是一个声明。那?/SPAN>body?/SPAN>membervariableq回了所有的包涵指定cd变量得语句(包括 变量付倹{声明、判断等Q那么这个图被理解ؓ(f)Q所有不是声明得语句内用的变量的集合?/SPAN>
没有被声明的变量Q?SPAN style="COLOR: red">如下?/SPAN>?BR>
?
q里的意思是所有作为声明语句的变量的集合?/SPAN>
那么通常情况下,A集合?/SPAN>B集合应该是相{的Q也是说所有被声明q的变量Q?/SPAN>B集合内容Q应该都被?/SPAN>/付?/SPAN>/判断Q?/SPAN>A集合的内容)。那么对于存在声明了但没有被使用的变量的Ҏ(gu)情况应该怎么栯C呢Q?/SPAN>
Node Set:Node?/SPAN>Node集合的处理。分?/SPAN>UnionQ合qӞ?/SPAN>IntersectionQ交叉)?/SPAN>DifferenceQ差|左差/叛_Q?/SPAN>XorQ异或)?SPAN style="COLOR: red">如下?/SPAN>Q?BR>
?
如果 满q个规则Q那么输出相应得警告信息?/SPAN>
OutputQ?/SPAN>如果满check的条Ӟ向用戯回一个消息(头表示Q?/SPAN>
三.Python
q里python是用来给rulewizard作补充的一个脚本语a。通过python可以定制一些特D的Q?/SPAN>rulewizard?/SPAN>node不能完成的规则?/SPAN>Python可以使用2U方式被加入到规则中Q?/SPAN>
作ؓ(f)一个输?/SPAN>Q如果规则没有被遵守那么可以调用一个违反规则的Ҏ(gu)。(cM于输出错误消息,只不q这里用来启动一个方法而已Q?/SPAN>
作ؓ(f)一个单独的Ҏ(gu)lgQ其实就是一个方法而已。比如,以上图ؓ(f)例子Q如果我们不判断B ?/SPAN> A的大关p,是xC?/SPAN>A?/SPAN>B的内容,那么得到如下的图:(x)
?
其中Method的内Ҏ(gu)Q?/SPAN>
def showCollectorContext(node,context):
a = context.getList("A")
b = context.getList("B")
context.report("D's Context is " + str(a) + "C's Context is " + str(b))
那么?/SPAN>c++testq行试的时候就?x)得到输出我们需要的内容?/SPAN>
关于python的语法我q里׃写了Q毕竟和q篇文章的内容美关系。如果想要了解,可以M载相兌料,我这里徏议?/SPAN> Orielly?/SPAN> Python in a Nutshell ?/SPAN>
四.不?/SPAN>
作ؓ(f)一个能自定义规则的静态测试工P不得不佩?/SPAN>parasoft兄弟们的才智。但是我觉得q有一些改善点的:(x)Q当然也不排除,已经有,但我没有发现的情况,如果各位知道h教,谢谢先)
1Q?SPAN style="FONT: 7pt 'Times New Roman'"> 通过pyhon我们可以q涉规则的制定,比如Q对于上例变量的定Q如果们不?/SPAN>collect set?/SPAN>Difference|left menusQ就是图4中最下的那个6边ŞQ,而用python一L(fng)可以Ҏ(gu)2?/SPAN>List。但是就像他提供的功能是静态测试一Pq里我们得到的永q是l过处理的集合。而不能把python插入的循环中,不能一ơ得C个变量,做点操作然后{下ơ的变量?/SPAN>
2Q?SPAN style="FONT: 7pt 'Times New Roman'"> 集合的概念在q里?/SPAN> 他的优点Q也有缺点,如果我们惌明确的得C码里相同变量的出现次敎ͼ那么通过现有?/SPAN>rulewizard是得不到的,因ؓ(f)我们得到的集合Ll过“合q”的、没有重复的数据l构?/SPAN>
3Q?SPAN style="FONT: 7pt 'Times New Roman'"> 我看到的资料,所有的内置?/SPAN>node都没有ؓ(f)用户提供接口。不能够把通过python的处理结果正的传递给内置?/SPAN>node。感觉所有的python做成?/SPAN>node 都是“叶子”?/SPAN>
4Q?SPAN style="FONT: 7pt 'Times New Roman'"> 技术支持和官方论坛人气低到Q看了浑w发抖的地步。没有交,没有讨论。不知道是不是因为太늚原因?/SPAN>
5Q?SPAN style="FONT: 7pt 'Times New Roman'"> 贵!Q!真的很贵。动辄就?/SPAN>4XXX$?/SPAN>-_-! 反正c(din)?/SPAN>
写q么多,希望大家多多交流Q国内关于Y件的新闻有不,l验却没有,希望能给我仍的“砖”能换来大家“玉”。谢谢!