??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲AV日韩精品久久久久久久,亚洲欧洲春色校园另类小说,亚洲ⅴ国产v天堂a无码二区http://m.tkk7.com/conans/category/32367.html你越挣扎我就兴?/description>zh-cnThu, 26 Jun 2008 16:50:26 GMTThu, 26 Jun 2008 16:50:26 GMT60CVS服务器快速指?/title><link>http://m.tkk7.com/conans/articles/210984.html</link><dc:creator>CONAN</dc:creator><author>CONAN</author><pubDate>Thu, 26 Jun 2008 15:39:00 GMT</pubDate><guid>http://m.tkk7.com/conans/articles/210984.html</guid><description><![CDATA[? <p>  CVS ?Concurrent Version System(q行版本pȝ)的羃写,用于版本理.如果大家曄参与q多人协作开发的目Q大家肯定有q样的痛苦经历:׃多个人同时修改同一个文Ӟ 自己辛辛苦苦修改的程序被别hd删除?另外Q如果你的Y?E序已经发布了三个版本, 而这时候用户需要你修改W二个版本的东西Q也怽会因为只保留了最新版本而痛哭流涕。还有就是你对程序做了一些修改,但是修改很少Q你只想l远方的同事发一个两个版本之间的差别文gQ这样可以免于邮׃够大Q网速太慢之cȝ问题.Z解决cMq样的问题,以及诸如生成补丁文gQ历史版本修改等Q一帮黑?褒义)在原?Unix 体系里很成熟?SCCS ?RCS 的基上,开发了 CVS?SCCSQSource Code Control SystemQRCSQRevision Control System)?/p> <p>  CVS 的基本工作思\是这LQ在一台服务器上徏立一个仓库,仓库里可以存放许多不同项目的源程序。由仓库理员统一理q些源程?q样Q就好象只有一个h在修Ҏ件一?避免了冲H?每个用户在用仓库之前,首先要把仓库里的目文g下蝲到本地。用户做的Q何修攚w先都是在本地q行Q然后用 cvs 命oq行提交Q由 cvs 仓库理员统一 修改.q样可以做到跟t文件变化,冲突控制{等.</p> <p>  ׃ CVS 是典型的 C/S l构的YӞ因此它也分成服务器端和客L两部分。不q大多数CVS 软g都把它们合二Z了。我们这里就分别从服务器和客L的角度讨论cvs的用?/p> <p>  Cvs服务器安?/p> <p>  首先保pȝ安装有cvsQ?/p> <p>  [root@mail xinetd.d]# rpm -qa|grep cvs </p> <p>  cvs-1.11.1p1-3 </p> <p>  如果命o输出cM于上面的输出则说明系l已l安装有cvsQ否则就需要从安装光盘中安装cvs的rpm包?</p> <p>  一 创徏CVS属主用户Q?/p> <p>  # useradd -d /cvsroot cvs </p> <p>  # chmod 771 /cv sroot </p> <p>  二、徏立CVS仓库(初始化cvs)</p> <p>  # su cvs </p> <p>  $ cvs -d /cvsroot init </p> <p>  $exit </p> <p>  # </p> <p>  四、启动cvs服务?/p> <p>  ?etc/xinetd.d/目录下创建文件cvspserverQ内容如下:</p> <p>  # default: on </p> <p>  # description: The cvs server sessions; </p> <p>  service cvspserver </p> <p>  { </p> <p>  socket_type = stream </p> <p>  wait = no </p> <p>  user = root </p> <p>  server = /usr/bin/cvs </p> <p>  server_args = -f --allow-root=/cvsroot pserver </p> <p>  log_on_failure += USERID </p> <p>  only_from = 192.168.0.0/24 </p> <p>  } </p> <p>  其中only_from是用来限制访问的Q可以根据实际情况不要或者修攏V?/p> <p>  修改该文件权限:</p> <p>  # chmod 644 cvspserver </p> <p>  然后重新启动xinetdQ?/p> <p>  # /etc/rc.d/init.d/xined restart </p> <p>  然后察看cvs服务器是否已l运行:</p> <p>  [root@mail xinetd.d]# netstat -lnp|grep 2401 </p> <p>  tcp 0 0 0.0.0.0:2401 0.0.0.0:* LISTEN 7866/xinetd</p> <p>  则说明cvs服务器已l运行?/p> <p>  五、创建用来访问cvs的用?/p> <p>  前面创徏的cvs用户是cvs仓库理用户Q而ؓ了让用户讉K则还需要一个访问用P</p> <p>  # useradd cvspub </p> <p>  # usemod –G cvs cvspub </p> <p>  q里d了一个用户cvspubQƈ且将该用h加到cvsl中?/p> <p>  六、管理cvs服务?/p> <p>  理 cvs 服务?服务器可以用了,现在大家最兛_的就是如何管理服务器Q比如,我想让一些h有读?或写 CVS 仓库的权限,但是不想l它pȝ权限怎么办呢Q不难,cvs初始化结束以后,在管理员用户(q里是cvs用户)的主目录里有一?CVSROOT 目录Q这个目录里有三个配|文Ӟpasswd, readers, writers。我们可以通过讄q三个文件来配置 CVS 服务器,下面分别介绍q几个文件的作用Q?/p> <p>  passwdQcvs 用户的用户列表文Ӟ它的格式很象 shadow 文gQ?/p> <p>  {cvs 用户名}:[加密的口令]:[{效pȝ用户名]</p> <p>  如果你希望一个用户只?cvs 用户Q而不是系l用P那么你就要设|这个文Ӟ刚刚安装完之后这个文件可能不存在Q你需要以cvs理员n?su cvs)用户手工创徏Q当然要按照上面格式Q?/p> <p>  W二个字D|该用L加密口oQ就是用 crypt (3) 加密的,你可以自己写一个程序来做加密,也可以用两个h的方法:先创Z个系l用P名字?cvs 用户一P口o是准备l它?cvs 用户口oQ创建完之后?/etc/shadow 把该用户W二个字D|贝过来,然后 再把q个用户删除.q个Ҏ对付数量的用户比较方便Qh一多就不合适了Q而且q有冲突条g(race condition)的安全隐患,q要 root 权限Q实在不怎么P不过权益之计而已Q另外一个方法就是利用apche的htpasswd命o创徏passwd用户Q添加用户只需要htpasswd passwd username卛_d用户到passwd文g中,不过需要在文g中对应行的最后添加一?#8220;:”冒号和对应的{效pȝ用户名;最好的是自己~写一个程序了来生成这个passwd文g了?/p> <p>  W三个字D就是等效系l用户名Q实际上是赋与一?cvs 用户一个等效的pȝ用户的权限,看下面的例子你就明白它的功能了?/p> <p>  readersQ有 cvs L限的用户列表文gQ就是一个一l列表。在q个文g中的用户?cvs</p> <p>  只有L限?/p> <p>  writersQ有 cvs 写权限的用户的列表文Ӟ?readers 一P是一个一l列表。在q个文g中的用户?cvs 有写权限?/p> <p>  上面三个文g在缺省安装的时候可能都不存在,需要我们自己创建,好吧Q现在还是让我们用一个例子来教学?假设我们有下面几个用户需要?cvsQ?/p> <p>  cvsuser1, cvsuser2, henry, betty, anonymous</p> <p>  其中 laser ?gumpwu 是系l用P而henry, betty, anonymous 我们都不想给pȝ用户权限Qƈ?betty ?anonymous 都是只读用户Q而且 anonymous 更是q口令都没有?/p> <p>  然后~辑 cvs 理员家目录?CVSROOT/passwd 文gQ加入下面几行:</p> <p>  laser:$xxefajfka;faffa33:cvspub</p> <p>  gumpwu:$ajfaal;323r0ofeeanv:cvspub</p> <p>  henry:$fajkdpaieje:cvspub</p> <p>  betty:fjkal;ffjieinfn/:cvspub</p> <p>  anonymous::cvspub</p> <p>  注意Q上面的W二个字D?分隔Wؓ :)是密文口令,你要用程序或者用我的土办法生成?/p> <p>  ~辑 readers 文gQ加入下面几行:</p> <p>  anonymous</p> <p>  betty</p> <p>  ~辑 writer 文gQ加入下面几行:</p> <p>  laser</p> <p>  gumpwu</p> <p>  henry</p> <p>  q样?ok 了,你再用几个用户分别登陆测试,׃发现一切都 ok 了。这里面的原理和说明我想׃多说了,其实很简单,和系l管理用L概念是一L?/p> <p>  七、徏立新的CVS目</p> <p>  一般我们都已经有一个或多个目了,q样我们可以用下面步骤生成一个新的CVS目?/p> <p>  一个工E文件置于CVs中进行版本控Ӟ在CVS 术语中称作导?import)。从名字上就可以看出Q在导入前需要ؓ此作些准备工作?/p> <p>  输入操作的基本要求是有个“q净”的目录结构?#8220;q净”的意思是不需要版本控制的文g都被U走?如编译生成的文gQ备份文件等{?。如果工E已l开始一D|间了Q这显得很重要。在目录中也许有些是不打将其置于版本控制下的文Ӟ但是又想他们放在这里,q种情况下,你要在输入之前将它们U走Q然后再Ud来?/p> <p>  注意的是CVS 认ؓI目录是不存在的。如果想增加一个既不包含文件又不包含子目录的目录,需要在其下创徏一个哑文g。徏议你创徏一个名?README.txt 的文Ӟ其内容ؓ对目录的要说明?/p> <p>  q入到已有项目的目录Q比如叫 cvstestQ?/p> <p>  $cd cvstest </p> <p>  q行命o项目文件导入到cvs仓库中:</p> <p>  $cvs import -m "this is a cvstest project" cvstest v_0_0_1 start </p> <p>  说明Qimport 是cvs的命令之一Q表C向cvs仓库输入目文g.</p> <p>  -m参数后面的字串是描述文本Q对目q行描述Q如果不?-m 参数Q那么cvs会自动运行一个编辑器(一般是viQ但是可以通过修改环境变量EDITOR来改成你喜欢用的~辑?让你输入信息Qcvstest 是项目名U?实际上是仓库名,在CVS服务器上会存储在以这个名字命名的仓库?</p> <p>  v_0_0_1是这个分支的L?没啥?或曰不常?</p> <p>  start 是每?import 标识文g的输入层ơ的标记Q没啥用?/p> <p>  q样我们徏立了一个CVS仓库了,然后Q我们可以把q个试目的文件删除,试验如何从仓库获取文件这会在后面的客L文章q行说明?/p> <p>  该文章借鉴了何伟^先生的很多内容,在此表示感谢Q?</p> <!-- 正文end --> <img src ="http://m.tkk7.com/conans/aggbug/210984.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/conans/" target="_blank">CONAN</a> 2008-06-26 23:39 <a href="http://m.tkk7.com/conans/articles/210984.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CVS使用手册http://m.tkk7.com/conans/articles/210985.htmlCONANCONANThu, 26 Jun 2008 15:39:00 GMThttp://m.tkk7.com/conans/articles/210985.html

CVS是一个C/SpȝQ多个开发h员通过一个中心版本控制系l来记录文g版本Q从而达C证文件同步的目的。工作模式如下:

       CVS服务器(文g版本库)
/ | \
Q版 ??步)
/ | \
开发? 开发? 开发?

作ؓ一般开发h员挑?,6看就可以了,CVS的管理员则更需要懂的更多一些,最后还单介l了一些Windows下的cvs客户端用,CVSq?E用戯证的选择及与BUG跟踪pȝ{开发环境的集成问题?/p>

  1. CVS环境初始?/a>QCVS环境的搭?理?
  2. CVS的日怋?/a>Q日常开发中最常用的CVS命oQ?开发h?理?
  3. CVS的分支开?/a>Q项目按照不同进度和目标q发q行 理?
  4. CVS的用戯?/a>Q通过SSH的远E用戯证,安全Q简?理?
  5. CVSWEBQCVS的WEB讉K界面大大提高代码版本比较的效?理?
  6. CVS TAGQ将$Id$ 加入代码注释中,方便开发过E的跟踪开发h?
  7. CVS vs VSS: CVS和Virsual SourceSafe的比?开发h?理?
  8. WinCVS: 通过SSH认证的WinCVS认证讄
  9. ZCVSTrac的小l开发环境搭?/a>Q通过CVSTrac实现web界面的CVS用户理,集成的BUG跟踪和WIKI交流
  10. CVS中的用户权限理Q基于系l用LCVS权限理和基于CVSROOT/passwd的虚拟用L?

一个系l?0%的功能往往能够满80%的需求,CVS也不例外Q以下是CVS最常用的功能,可能q不到它全部命o选项?0%Q作Z般开发h员^时会用cvs update和cvs commit够了,更多的需求在实际应用q程中自然会出现Q不时回头看看相x档经常有意外的收莗?/p>

CVS环境初始?/h2> 环境讄Q指定CVS库的路径CVSROOT

tcsh
setenv CVSROOT /path/to/cvsroot
bash
CVSROOT=/path/to/cvsroot ; export CVSROOT

后面q提到远ECVS服务器的讄Q?br /> CVSROOT=:ext:$USER@test.server.address#port:/path/to/cvsroot CVS_RSH=ssh; export CVSROOT CVS_RSH

初始化:CVS版本库的初始化?br /> cvs init

一个项目的首次导入
cvs import -m "write some comments here" project_name vendor_tag release_tag
执行后:会将所有源文g及目录导入到/path/to/cvsroot/project_name目录?br /> vender_tag: 开发商标记
release_tag: 版本发布标记

目导出Q将代码从CVS库里导出
cvs checkout project_name
cvs 创建project_name目录Qƈ最新版本的源代码导出到相应目录中。这个checkout和Virvual SourceSafe中的check out不是一个概念,相对于Virvual SourceSafe的check out是cvs updateQ?check in是cvs commit?/em>

CVS的日怋?strong>

 

注意Q第一ơ导Z后,׃是通过cvs checkout来同步文件了Q而是要进入刚才cvs checkout project_name导出的project_name目录下进行具体文件的版本同步Q添加,修改Q删除)操作?/strong>

文件同步到最新的版本
cvs update
不制定文件名Qcvs同步所有子目录下的文gQ也可以制定某个文g?目录q行同步
cvs update file_name
最好每天开始工作前或将自己的工作导入到CVS库里前都要做一ơ,q养?#8220;先同?后修?#8221;的习惯,和Virvual SourceSafe不同QCVS里没有文仉定的概念Q所有的冲突是在commit之前解决Q如果你修改q程中,有其他h修改qcommitCCVS 库中QCVS会通知你文件冲H,q自动将冲突部分?br /> >>>>>>
content on cvs server
<<<<<<
content in your file
>>>>>>
标记出来Q由你确认冲H内容的取舍?br /> 版本冲突一般是在多个h修改一个文仉成的,但这U项目管理上的问题不应该指望由CVS来解冟?/em>

认修改写入到CVS库里
cvs commit -m "write some comments here" file_name

注意QCVS的很多动作都是通过cvs commitq行最后确认ƈ修改的,最好每ơ只修改一个文件。在认的前Q还需要用户填写修Ҏ释,以帮助其他开发h员了解修改的原因。如果不用写-m "comments"而直接确认`cvs commit file_name` 的话Qcvs会自动调用系l缺省的文字~辑?一般是vi)要求你写入注释?br /> 注释的质量很重要Q所以不仅必要写,而且必须写一些比较有意义的内容:以方便其他开发h员能够很好的理解
不好的注释,很难让其他的开发h员快速的理解Q比如: -m "bug fixed" 甚至 -m ""
好的注释Q甚臛_以用中文: -m "在用h册过E中加入了Email地址校验"


修改某个版本注释Q每ơ只认一个文件到CVS库里是一个很好的习惯Q但隑օ有时候忘了指定文件名Q把多个文g以同h释commit到CVS库里了,?下命令可以允怽修改某个文g某个版本的注释:
cvs admin -m 1.3:"write some comments here" file_name

d文g
创徏好新文g后,比如Qtouch new_file
cvs add new_file
注意Q对于图片,Word文档{非U文本的目Q需要用cvs add -kb选项?q制文g方式导入(k表示扩展选项Qb表示binary)Q否则有可能出现文g被破坏的情况
比如Q?br /> cvs add -kb new_file.gif
cvs add -kb readme.doc

如果关键词替换属性在首次导入时设|错了怎么办?
cvs admin -kkv new_file.css

然后认修改q注?/span>
cvs ci -m "write some comments here"

删除文g
某个源文g物理删除后,比如Qrm file_name
cvs rm file_name
然后认修改q注?br /> cvs ci -m "write some comments here"
以上面前2步合q的Ҏ为:
cvs rm -f file_name
cvs ci -m "why delete file"
注意Q很多cvs命o都有~写形式Qcommit=>ci; update=>up; checkout=>co/get; remove=>rm;

d目录
cvs add dir_name

查看修改历史
cvs log file_name
cvs history file_name

查看当前文g不同版本的区?/u>
cvs diff -r1.3 -r1.5 file_name
查看当前文gQ可能已l修改了Q和库中相应文g的区?br /> cvs diff file_name
cvs的web界面提供了更方便的定位文件修改和比较版本区别的方法,具体安装讄L后面的cvsweb使用

正确的通过CVS恢复旧版本的ҎQ?br /> 如果用cvs update -r1.2 file.name
q个命o是给file.name加一个STICK TAGQ?"1.2" Q虽然你的本意只是想它恢复?.2版本
正确的恢复版本的Ҏ是:cvs update -p -r1.2 file_name >file_name
如果不小心已l加成STICK TAG的话Q用cvs update -A 解决

Ud文g/文g重命?/u>
cvs里没有cvs move或cvs renameQ因两个操作是可以由先cvs remove old_file_nameQ然后cvs add new_file_name实现的?/p>

删除/Ud目录
最方便的方法是让管理员直接UdQ删除CVSROOT里相应目录(因ؓCVS一个项目下的子目录都是独立的,Ud?CVSROOT目录下都可以作ؓ新的 独立目Q好比一颗树Q其实砍下Q意一枝都能独立存z)Q对目录q行了修改后Q要求其开发h员重新导出项目cvs checkout project_name 或者用cvs update -dP同步?/p>

目发布导出不带CVS目录的源文g
做开发的时候你可能注意CQ每个开发目录下QCVS都创Z一个CVS/目录。里面有文g用于记录当前目录和CVS库之间的对应信息。但目发布的时?你一般不希望把文件目录还带着含有CVS信息的CVS目录吧,q个一ơ性的导出q程使用cvs export命oQ不qexport只能针对一个TAG或者日期导出,比如Q?br /> cvs export -r release1 project_name
cvs export -D 20021023 project_name
cvs export -D now project_name

CVS BranchQ项目多分支同步开?/h2> 认版本里程:多个文g各自版本号不一P目C定阶D,可以l所有文件统一指定一个阶D里E碑版本P方便以后按照q个阶段里程版本号导出目Q?同时也是目的多个分支开发的基础?br />

cvs tag release_1_0

开始一个新的里E碑Q?br /> cvs commit -r 2 标记所有文件开始进?.x的开?/p>

注意QCVS里的revsion和Y件包的发布版本可以没有直接的关系。但所有文件用和发布版本一致的版本h较有助于l护?/em>

版本分支的徏?/u>
在开发项目的2.x版本的时候发?.x有问题,?.x又不敢用Q则从先前标记的里程:release_1_0导出一个分?release_1_0_patch
cvs rtag -b -r release_1_0 release_1_0_patch proj_dir

一些h先在另外一个目录下导出release_1_0_patchq个分支Q解?.0中的紧急问题,
cvs checkout -r release_1_0_patch
而其他h员仍旧在目的主q分?.x上开?/p>

在release_1_0_patch上修正错误后Q标C?.0的错误修正版本号
cvs tag release_1_0_patch_1

如果2.0认ؓq些错误修改?.0里也需要,也可以在2.0的开发目录下合ƈrelease_1_0_patch_1中的修改到当前代码中Q?br /> cvs update -j release_1_0_patch_1

CVS的远E认证通过SSHq程讉KCVS

使用cvs本nZpserver的远E认证很ȝ,需要定义服务器和用LQ用户名Q设|密码等Q?br />

常见的登陆格式如下:
cvs -d :pserver:cvs_user_name@cvs.server.address:/path/to/cvsroot login
例子Q?br /> cvs -d :pserver:cvs@samba.org:/cvsroot login

不是很安全,因此一般是作ؓ匿名只读CVS讉K的方式。从安全考虑Q通过pȝ本地帐号认证q过SSH传输是比较好的办法,通过在客h?/etc/profile里设|一下内容:
CVSROOT=:ext:$USER@cvs.server.address#port:/path/to/cvsroot CVS_RSH=ssh; export CVSROOT CVS_RSH
所有客h所有本地用户都可以映射到CVS服务器相应同名帐号了?/p>

比如:

CVS服务器是192.168.0.3Q上面CVSROOT路径?home/cvsrootQ另外一台开发客h?92.168.0.4Q如?tom?台机器上都有同名的帐P那么?92.168.0.4上设|了Q?br /> export CVSROOT=:ext:tom@192.168.0.3:/home/cvsroot
export CVS_RSH=ssh
tom可以直接在192.168.0.4上对192.168.0.3的cvsrootq行讉K了(如果有权限的话)
cvs checkout project_name
cd project_name
cvs update
...
cvs commit

如果CVS所在服务器的SSH端口不在~省?2Q或者和客户端与CVS服务器端SSH~省端口不一_有时候设|了Q?br /> :ext:$USER@test.server.address#port:/path/to/cvsroot

仍然不行Q比如有以下错误信息Q?br /> ssh: test.server.address#port: Name or service not known
cvs [checkout aborted]: end of file from server (consult above messages if any)

解决的方法是做一个脚本指定端口{向(不能使用aliasQ会出找不到文g错误Q:
创徏一?usr/bin/ssh_cvs文gQ假设远E服务器的SSH端口是非~省端口Q?4567
#!/bin/sh
/usr/bin/ssh -p 34567 "$@"
然后Qchmod +x /usr/bin/ssh_cvs
qCVS_RSH=ssh_cvs; export CVS_RSH

注意Qport是指相应服务器SSH的端口,不是指cvs专用的pserver的端?br />

CVSWEBQ提高文件浏览效?/h2> CVSWEB是CVS的WEB界面Q可以大大提高程序员定位修改的效?

使用的样例可以看Q?a >http://www.freebsd.org/cgi/cvsweb.cgi

CVSWEB的下载:CVSWEB从最初的版本已经演化出很多功能界面更丰富的版本,q个是我个h感觉安装讄比较方便的:
原先在:http://www.spaghetti-code.de/software/linux/cvsweb/Q但目前已经删除Q?a >目前仍可以在本站下蝲CVSWEBQ?其实最q?q?a >FreeBSD的CVSWeb目已经有了更好的发展吧Q而当初没有用FreeBSD那个版本 主要是因ؓ没有彩色的文件Diff功能?
下蝲解包Q?br /> tar zxf cvsweb.tgz
把配|文件cvsweb.conf攑ֈ安全的地方(比如和apache的配|放在同一个目录下Q,
修改Qcvsweb.cgi让CGI扑ֈ配置文gQ?br /> $config = $ENV{'CVSWEB_CONFIG'} || '/path/to/apache/conf/cvsweb.conf';

转到/path/to/apache/conf下ƈ修改cvsweb.confQ?/p>

  1. 修改CVSROOT路径讄Q?br /> %CVSROOT = (
    'Development' => '/path/to/cvsroot', #<==修改指向本地的CVSROOT
    );
  2. ~省不显C已l删除的文档Q?br /> "hideattic" => "1",#<==~省不显C已l删除的文档
  3. 在配|文件cvsweb.conf中还可以定制头的描qC息,你可以修?long_intro成你需要的文字

CVSWEB可不能随便开攄所有用P因此需要用WEB用户认证Q?br /> 先生?passwd:
/path/to/apache/bin/htpasswd -c cvsweb.passwd user

修改httpd.conf: 增加
<Directory "/path/to/apache/cgi-bin/cvsweb/">
AuthName "CVS Authorization"
AuthType Basic
AuthUserFile /path/to/cvsweb.passwd
require valid-user
</Directory>

CVS TAGS: $Id$

?Id$ 加在E序文g开头的注释里是一个很好的习惯Qcvs能够自动解释更新其中的内ҎQfile_name version time user_name 的格式,比如Qcvs_card.txt,v 1.1 2002/04/05 04:24:12 chedong ExpQ可以这些信息了解文件的最后修改h和修Ҏ间?br />
几个常用的缺省文Ӟ
default.php
<?php
/*
* Copyright (c) 2002 Company Name.
* $Header$
*/

?>
====================================
Default.java: 注意文g头一般注释用 /* 开?JAVADOC注释?/** 开始的区别
/*
* Copyright (c) 2002 MyCompany Name.
* $Header$
*/

package com.mycompany;

import java.;

/**
* comments here
*/
public class Default {
/**
* Comments here
* @param
* @return
*/
public toString() {

}
}
====================================
default.pl:
#!/usr/bin/perl -w
# Copyright (c) 2002 Company Name.
# $Header$

# file comments here

use strict;

CVS vs VSS

CVS没有文g锁定模式QVSS在check out同时Q同时记录了文g被导锁定?

CVS的update和commitQ?VSS是get_lastest_version和check in

对应VSS的check out/undo check out的CVS里是edit和unedit

在CVS中,标记自动更新功能~省是打开的,q样也带来一个潜在的问题Q就是不?kb方式dbinary文g的话在cvs自动更新时可能会D 文g失效?/p>

$Header$ $Date$q样的标记在Virsual SourceSafe中称之ؓKeyword ExplainationQ缺省是关闭的,需要通过OPITION打开Qƈ指定需要进行源文g关键词扫描的文gcdQ?.txt,*.java, *.html...

对于Virsual SourceSafe和CVS都通用的TAG有:
$Header$
$Author$
$Date$
$Revision$

我徏议尽量用通用的关键词保证代码在CVS和VSS都能方便的跟t?

WinCVS

下蝲Q?br />

cvs Windows客户端:目前E_版本?.2
http://cvsgui.sourceforge.net
ssh Windows客户?br /> http://www.networksimplicity.com/openssh/

安装好以?个Y件以后:
WinCVS客户端的admin==>preference讄
1 在general选单?br /> 讄CVSROOTQ?username@192.168.0.123:/home/cvsroot
讄Authorization: 选择SSH server

2 Port选单?br /> 钩上Qcheck for alternate rsh name
q设|ssh.exe的\径,~省是装?C:\Program Files\NetworkSimplicity\ssh\ssh.exe

然后可以用WinCVSq行cvs操作了,所有操作都会蟩出命令行H口要求你输入服务器端的认证密码?

当然Q如果你觉得q样很烦的话Q还有一个办法就是生成一个没有密码的公钥/U钥对,q设|CVS使用Z公钥/U钥的SSH认证Q在general 选单里)?/p>

可以选择的diff工具Qexamdiff
下蝲Q?br /> http://www.prestosoft.com/examdiff/examdiff.htm
q是在WinCVS菜单admin==>preference的WinCVS选单?br /> 选上QExternel diff program
q设|diff工具的\径,比如QC:\Program Files\ed16i\ExamDiff.exe
在对文gq行版本diffӞW一ơ需要将H口右下角的use externel diff选上?

ZCVSTrac的小l开发环境搭?/h2> 作ؓ一个小l的开发环境,版本控制pȝ和BUG跟踪pȝ{都涉及到用戯证部分。如何方便的这些系l集成v来是一个非常困隄事情Q毕竟我们不能指?Linux下有像Source Offsite那样集成度很高的版本控制/BUG跟踪集成pȝ?br />
我个人是很反对用pserver模式的远E用戯证的Q但如果大部分组员用WINDOWS客户端进行开发的话,M来说使用 CVSROOT/passwd认证q是很难避免的,但CVS本n用户的管理比较麻烦。本来我打算自己用perl写一个管理界面的Q直到我发现?CVSTracQ?一个基于WEB界面的BUG跟踪pȝQ它外挂在CVSpȝ上的BUG跟踪pȝQ其中就包括了WEB界面的CVSROOT/passwd文g的管理,甚至q?集成了WIKIWIKI讨论l功能?

q里首先说一下CVS的pserver模式下的用户认证QCVS的用戯证服务是Zinetd中的Q?br /> cvspserver stream tcp nowait apache /usr/bin/cvs cvs --allow-root=/home/cvsroot pserver
一般在2401端口Q这个端口号很好讎ͼ49的^方)

CVS用户数据库是ZCVSROOT/passwd文gQ文件格式:
[username]:[crypt_password]:[mapping_system_user]
׃密码都用的是UNIX标准的CRYPT加密Q这个passwd文g的格式基本上是apache的htpasswd格式的扩展(比APACHE?PASSWD文g多一个系l用h字D)Q所以这个文件最单的Ҏ可以?br /> apache/bin/htpasswd -b myname mypassword
创徏。注意:通过htpasswd创徏出来的文件会没有映射pȝ用户的字D?br /> 例如Q?br /> new:geBvosup/zKl2
setup:aISQuNAAoY3qw
test:hwEpz/BX.rEDU

映射pȝ用户的目的在于:你可以创Z个专门的CVS服务帐号Q比如用apache的运行用户apacheQƈ?home/cvsroot目录?的所有权限赋予这个用P然后在passwd文g里创Z同的开发用户帐P但开发用户帐h后的文gd权限都映ؓapache用户Q在SSH模式?多个pȝ开发用户需要在同一个组中才可以怺dCVS库中的文件?/p>

q一步的Q你可以用户分别映到apacheq个pȝ用户上?br /> new:geBvosup/zKl2:apache
setup:aISQuNAAoY3qw:apache
test:hwEpz/BX.rEDU:apache

CVSTrac很好的解决了CVSROOT/passwd的管理问题,而且包含了BUG跟踪报告pȝ和集成WIKIWIKI交流功能{,使用?CGI方式的安装,q且ZGNU Public LicenseQ?br />

在inetd里加入cvspserver服务Q?br /> cvspserver stream tcp nowait apache /usr/bin/cvs cvs --allow-root=/home/cvsroot pserver

xietd的配|文Ӟ%cat cvspserver
service cvspserver
{
disable = no
socket_type = stream
wait = no
user = apache
server = /usr/bin/cvs
server_args = -f --allow-root=/home/cvsroot pserver
log_on_failure += USERID
}

注意Q这里的用户讄成apache目的是和/home/cvsroot的所有用户一_q且必须让这个这个用户对/home/cvsroot/下的 CVSROOT/passwd和cvstrac初始化生成的myproj.db有读取权限?/p>

 

安装q程

  1. 下蝲Q可以从http://www.cvstrac.org 下蝲
    我用的是已经在Linux上编译好的应用程序包Qcvstrac-1.1.2.bin.gzQ?br /> %gzip -d cvstrac-1.1.2.bin.gz
    %chmod +x cvstrac-1.1.2.bin
    #mv cvstarc-1.1.1.bin /usr/bin/cvstrac
    如果是从源代码编译:
    ?http://www.sqlite.org/download.html 下蝲SQLITE的rpm包:
    rpm -i sqlite-devel-2.8.6-1.i386.rpm
    ?ftp://ftp.cvstrac.org/cvstrac/ 下蝲软g?br /> 解包Q假设解包到/home/chedong/cvstrac-1.1.2下,q规划将cvstrac安装?usr/local/bin目录下, cd /home/chedong/cvstrac-1.1.2 ~辑linux-gcc.mk:
    修改Q?br /> SRCDIR = /home/chedong/cvstrac-1.1.2
    INSTALLDIR = /usr/local/bin
    然后
    mv linux-gcc.mk Makefile
    make
    #make install

  2. 初始化cvstrac数据库:假设数据库名?myproj
    在已l装好的CVS服务器上QCVS库这时候应该已l是初始化好了,比如Qcvs init初始化在/home/cvsroot里)Q运行一?br /> %cvstrac init /home/cvsroot myproj
    q行后,/home/cvsroot里会有一个的myproj.db库,使用CVSTRAC服务Q?home/cvsroot/myproj.db /home/cvsroot/CVSROOT/readers /home/cvsroot/CVSROOT/writers /home/cvsroot/CVSROOT/passwdq几个文件对于web服务的运行用户应该是可写的,在RedHat8上,~省有一个叫 apache用户和一个apachel,所以在httpd.conf文g中设|了用apache用户q行web服务Q?br /> User apache
    Group apacheQ?br /> 然后讄属于apache用户和apachel?br /> #chown -R apache:apache /home/cvsroot
    -rw-r--r-- 1 apache apache 55296 Jan 5 19:40 myproj.db
    drwxrwxr-x 3 apache apache 4096 Oct 24 13:04 CVSROOT/
    drwxrwxr-x 2 apache apache 4096 Aug 30 19:47 some_proj/
    此外q在/home/cvsroot/CVSROOT中设|了Q?br /> chmod 664 readers writers passwd
  3. 在apche/cgi-bin目录中创本cvstrac:
    #!/bin/sh
    /usr/bin/cvstrac cgi /home/cvsroot
    讄脚本可执行:
    chmod +x /home/apache/cgi-bin/cvstrac
  4. ?http://cvs.server.address/cgi-bin/cvstrac/myproj q入理界面
    ~省d名:setup 密码 setup
    对于一般用户可以从Q?br /> http://cvs.server.address/cgi-bin/cvstrac/myproj
  5. 在setup中重新设|了CVSROOT的\径后Q?home/cvsroot
    如果是初ơ用需要在/home/cvsroot/CVSROOT下创建passwd, readers, writers文g
    touch passwd readers writers
    然后讄属于apache用户Q?br /> chown apache.apache passwd readers writers
    q样使用setup用户创徏新用户后会同步更新CVSROOT/passwd下的帐号

修改d密码Q进行BUG报告{,
更多使用l节可以在用中慢慢了解?br />

对于前面提到的WinCVS在perference里设|:
CVSROOT栏输入:username@ip.address.of.cvs:/home/cvsroot
Authenitication选择Quse passwd file on server side
可以了从服务器上进行CVS操作了?br />

CVS的用h限管?/h2>

CVS的权限管理分2U策略:

  • Zpȝ文g权限的系l用L理:适合多个在Linux上用系l帐L开发h员进行开发?
  • ZCVSROOT/passwd的虚拟用L理:适合多个在Windowsq_上的开发h员将帐号映射成系l帐号用?
Z么用apache/apache用户Q首先RedHat8中缺省就有了Q而且使用q个用户可以方便通过cvstracq行WEB理?br /> chown -R apache.apache /home/cvsroot
chmod 775 /home/cvsroot

Linux上通过sshq接CVS服务器的多个开发h员:通过都属于apachel实现文件的׃nd
开发h员有开发服务器上的pȝ帐号Qsysuser1 sysuser2Q设|让他们都属于apachel,因ؓ通过cvs新导入的目都是对组开攄Q?64权限的,q样无论那个pȝ用户导入的项目文Ӟ?要文件的l宿LapacheQ所有其他同l系l开发用户就都可以读写;Zsshq程认证的也是一栗?br />

   apache(system group)
/            |           \
sysuser1   sysuser2     sysuser3

Windows上通过cvspserverq接CVS服务器的多个开发h员:通过在passwd文gU映成 apache用户实现文g的共享读?br /> 他们的帐号通过CVSROOT/passwd和readers writersq几个文件管理;通过cvstrac讄所有虚拟用户都映射到apache用户上即可?br />

   apache(system user)
/            |            \
windev1     windev2      windev3             

 

 

利用CVS WinCVS/CVSWeb/CVSTrac 构成了一个相对完善的跨^台工作组开发版本控制环境?/p>

相关资源Q?

CVS HOMEQ?br /> http://www.cvshome.org

CVS FAQQ?br /> http://www.loria.fr/~molli/cvs-index.html

相关|站:
http://directory.google.com/Top/Computers/Software/Configuration_Management/Tools/Concurrent_Versions_System/

CVS--q行版本pȝ
http://www.soforge.com/cvsdoc/zh_CN/book1.html

CVS 免费?
http://cvsbook.red-bean.com/

CVS命o的速查卡片 refcards.com/refcards/cvs/

WinCVS:
http://cvsgui.sourceforge.net/

CVSTrac: A Web-Based Bug And Patch-Set Tracking System For CVS
http://www.cvstrac.org

StatCVSQ基于CVS的代码统计工P按代码量Q按开发者的l计表等
http://sourceforge.net/projects/statcvs

如何在WEB开发中规划CVS上:在Google上查 "cvs web development"
http://ccm.redhat.com/bboard-archive/cvs_for_web_development/index.html

一些集成了CVS的IDE环境Q?
Eclipse



CONAN 2008-06-26 23:39 发表评论
]]>
CVS使用l验?/title><link>http://m.tkk7.com/conans/articles/210983.html</link><dc:creator>CONAN</dc:creator><author>CONAN</author><pubDate>Thu, 26 Jun 2008 15:38:00 GMT</pubDate><guid>http://m.tkk7.com/conans/articles/210983.html</guid><description><![CDATA[CVS ?Concurrent Version SystemQƈ行版本系l)的羃写,用于版本理。在多h团队开发中的作用更加明显。CVS 的基本工作思\是这LQ在一台服务器上徏立一个仓库,仓库里可以存放许多不同项目的源程序。由仓库理员统一理q些源程序。这P好象只有一个h在修Ҏ件一栗避免了冲突。每个用户在使用仓库之前Q首先要把仓库里的项目文件下载到本地。用户做的Q何修攚w先都是在本地q行Q然后用 cvs 命oq行提交Q由 cvs 仓库理员统一 修改。这样就可以做到跟踪文g变化Q冲H控制等{? <div id="355f5dr" class="tbody"> <p>CVS ?Concurrent Version SystemQƈ行版本系l)的羃写,用于版本理。在多h团队开发中的作用更加明显。CVS 的基本工作思\是这LQ在一台服务器上徏立一个仓库,仓库里可以存放许多不同项目的源程序。由仓库理员统一理q些源程序。这P好象只有一个h在修Ҏ件一栗避免了冲突。每个用户在使用仓库之前Q首先要把仓库里的项目文件下载到本地。用户做的Q何修攚w先都是在本地q行Q然后用 cvs 命oq行提交Q由 cvs 仓库理员统一 修改。这样就可以做到跟踪文g变化Q冲H控制等{? <p>  ׃CVS是徏立在在原?Unix 体系里很成熟?SCCS ?RCS 的基上,所以CVS多是LinuxQUNIXQ系l中所使用Q本文中服务器端讄也是以LinuxZ?/p> <p>  一、CVS服务器的安装</p> <p>  首先认pȝ中是否安装CVS服务Q?br />    [root@localhost /]# rpm -qa|grep cvs<br /> cvs-1.11.2-cvshome.7x.1<br />    如果命o输出cM于上面的输出则说明系l已l安装有cvsQ否则就需要从安装光盘中安装cvs的rpm包,或者到http://www.cvshome.org下蝲?/p> <p>  1、徏?CVSROOT</p> <p>  目录Q因里涉及到用户对CVSROOT里的文gd的权限问题,所以比较简单的Ҏ是徏立一个组Q然后再建立一个属于该l的帐户Q而且以后有读写权限的用户都要属于该组。假设我们徏一个组叫cvsQ用户名是cvsroot。徏l和用户的命令如?/p> <p>#groupadd cvs<br /> #adduser cvsroot</p> <p>  生成的用户宿ȝ录在/home/cvsrootQ根据自qpȝ调整Q?/p> <p>  2、用cvsroot 用户登陆Q修?/home/cvsroot QCVSROOTQ的权限Q赋与同lh有读写的权限Q </p> <p>  $chmod 771 . Q或?70应该也可以)</p> <p>  注意Q这一部分工作是按照文档说明做的,是否一定需要这h有试验,我会在做试验后在以后版本的教E说得仔l一炏V如果您有这斚w的经验请提供l我Q谢谢?/p> <p>  3、徏立CVS仓库Q(仍然?cvsroot 用户Q,用下面命令:</p> <p>  $cvs -d /home/cvsroot init</p> <p>  4、以rootw䆾登陆Q修?/etc/inetd.confQ?xinetd 的系l没有此文gQ和 /etc/services</p> <p>  如果用的?inetd 的系l,?/etc/inetd.conf 里加入:<br />    <br />    cvsserver  stream tcp nowait root /usr/bin/cvs cvs -f --allow-root=/home/cvsroot pserver</p> <p>  说明Q上面的行是单独一整行Q?usr/bin/cvs 应该是你的cvs版本的命令\径,h据自qpȝ调整Q?home/cvsroot是你建立的CVSROOT的\径,也请Ҏ上面建立目录的部分的内容做调整?/p> <p>  如果是?xinetd 的系l,需要在 /etc/xinetd.d/ 目录下创建文?cvspserverQ此名字可以自己定义Q,内容如下Q?/p> <p>  # default: on<br />    # description: The cvs server sessions;</p> <p>  service cvsserver<br />    {<br />    socket_type = stream<br />    wait = no<br />    user = root<br />    server = /usr/bin/cvs<br />    server_args = -f --allow-root=/cvsroot pserver<br />    log_on_failure += USERID<br />    only_from = 192.168.0.0/24<br />    }</p> <p>  其中only_from是用来限制访问的Q可以根据实际情况不要或者修攏V修改该文g权限Q?/p> <p>  # chmod 644 cvspserver</p> <p>  ?etc/services里加入:</p> <p>  cvsserver 2401/tcp</p> <p>  说明Qcvsserver 是Q意的名称Q但是不能和已有的服务重名,也要和上面修?/etc/inetd.conf 那行的第一一致?/p> <p>  5、添加可以?CVS 服务的用户到 cvs l:</p> <p>  ?root w䆾修改 /etc/groupQ把需要?CVS 的用户名加到 cvs l里Q比如我惌用户 laser 和gumpwu 能够使用 CVS 服务Q那么修改以后的 /etc/group 应该有下面这样一行:</p> <p>  cvs:x:105:laser,gumpwu</p> <p>  在你的系l上GID可能不是105Q没有关pR主要是要把laser和gumpwu用逗号分隔开写在最后一个冒号后面。当Ӟ象RedHat{分发版有类似linuxconfq样的工L话,用工具做qg事会更简单些?/p> <p>  6、重起inetd使修改生效:</p> <p>  #killall -HUP inetd</p> <p>  如果使用的是 xinetd 的系l:<br /> <br />    # /etc/rc.d/init.d/xined restart</p> <p>然后察看cvs服务器是否已l运行:<br /> [root@localhost /]# netstat -lnp|grep 2401<br />    tcp 0 0 0.0.0.0:2401 0.0.0.0:* LISTEN 1041/xinetd<br /> 则说明cvs服务器已l运行?/p> <p><br />    二、管理CVS服务?/p> <p>  服务器可以用了,现在大家最兛_的就是如何管理服务器Q比如,我想让一些h有读?或写 CVS 仓库的权限,但是不想l它pȝ权限怎么办呢Q?/p> <p>  不难Q在 cvs 理员用P在我q里?cvsroot 用户Q的家目录里有一?CVSROOT 目录Q这个目录里有三个配|文Ӟpasswd, readers, writersQ我们可以通过讄q三个文件来配置 CVS 服务器,下面分别介绍q几个文件的作用Q?/p> <p>  passwdQcvs 用户的用户列表文Ӟ它的格式很象 shadow 文gQ?/p> <p>  {cvs 用户名}:[加密的口令]:[{效pȝ用户名]</p> <p>  如果你希望一个用户只?cvs 用户Q而不是系l用P那么你就要设|这个文Ӟ刚刚安装完之后这个文件可能不存在Q你需要以 cvs 理员用h工创建,当然要按照上面格式,W二个字D|该用L加密口oQ就是用 crypt (3)加密的,你可以自己写一个程序来做加密,也可以用我介l的h的方法:先创Z个系l用P名字?cvs 用户一P口o是准备l它?cvs 用户口oQ创建完之后?/etc/shadow 把该用户W二个字D|贝过来,然后再把q个用户删除。这个方法对付数量少的用h较方便,Z多就不合适了Q而且q有冲突条g(race condition)的安全隐患,q要 root 权限Q实在不怎么栗不q权益之计而已。写一个小E序q不难,可以?linuxforum 的编E版搜烦一下,有个朋友已经写了一个脓在上面了?/p> <p>  W三个字D就是等效系l用户名Q实际上是赋与一?cvs 用户一个等效的pȝ用户的权限,看下面的例子你就明白它的功能了?/p> <p>  readersQ有 cvs L限的用户列表文g。就是一个一l列表。在q个文g中的用户?cvs只有L限?/p> <p>  writersQ有 cvs 写权限的用户的列表文件。和 readers 一P是一个一l列表。在q个文g中的用户?cvs 有写权限?/p> <p>  上面三个文g在缺省安装的时候可能都不存在,需要我们自己创建,好吧Q现在还是让我们用一个例子来教学吧。假设我们有下面几个用户需要?cvsQ?/p> <p>  laser, gumpwu, henry, betty, anonymous?/p> <p>  其中 laser ?gumpwu 是系l用P?henry, betty, anonymous 我们都不想给pȝ用户权限Qƈ?betty ?anonymous 都是只读用户Q而且 anonymous 更是q口令都没有。那么好Q我们先做一些准备工作,先创Z?cvspub 用户Q这个用L责Q是代表所有非pȝ用户?cvs 用户d cvs 仓库?/p> <p>  #adduser<br />    ...</p> <p>  然后~辑 /etc/groupQo cvspub 用户?cvs l里Q同时把其它有系l用h限的用户加到 cvs l里。(见上文)</p> <p>  然后~辑 cvs 理员家目录?CVSROOT/passwd 文gQ加入下面几行:</p> <p>  laser:$xxefajfka;faffa33:cvspub<br />    gumpwu:$ajfaal;323r0ofeeanv:cvspub<br />    henry:$fajkdpaieje:cvspub<br />    betty:fjkal;ffjieinfn/:cvspub<br />    anonymous::cvspub</p> <p>  注意Q上面的W二个字D(分隔Wؓ :Q是密文口oQ你要用E序或者用我的土办法生成?/p> <p>  ~辑 readers 文gQ加入下面几行:</p> <p>  anonymous<br />    betty</p> <p>  ~辑 writers 文gQ加入下面几行:</p> <p>  laser<br />    gumpwu<br />    henry</p> <p>  注意Qwriters中的用户不能在readers中,要不然不能上传更新文件?/p> <p><br />    对于使用CVS的用戯修改它的环境变量Q例如laser用户的环境变量,打开/home/laserQlaser的宿ȝ录)下的.bash_profile文gQ加?/p> <p>  CVSROOT=/home/cvsroot<br />    export CVSROOT</p> <p>  用laser登陆可以徏立CVS目Q如果要root使用Q可以修?etc/profile文g?/p> <p><br />    现在我们各项都设|好了,那么怎么用呢Q我在这里写一个最单的Q估计也是最常用的)命o介绍Q?/p> <p>  首先Q徏立一个新的CVS目Q一般我们都已经有一些项目文件了Q这h们可以用下面步骤生成一个新的CVS目Q?/p> <p>  q入C的已有项目的目录Q比如叫 cvstestQ?/p> <p>  $cd cvstest<br />    q行命oQ?br />    $cvs import -m "this is a cvstest project" cvstest v_0_0_1 start</p> <p>  说明Qimport 是cvs的命令之一Q表C向cvs仓库输入目文g?-m参数后面的字串是描述文本Q随便写些有意义的东西,如果不加 -m 参数Q那么cvs会自动运行一个编辑器Q一般是viQ但是可以通过修改环境变量EDITOR来改成你喜欢用的~辑器。)让你输入信息Qcvstest 是项目名Uͼ实际上是仓库名,在CVS服务器上会存储在以这个名字命名的仓库里。)<br /> v_0_0_1是这个分支的L记。没啥用Q或C常用。)<br /> start 是每?import 标识文g的输入层ơ的标记Q没啥用?br /> q样我们徏立了一个CVS仓库了?/p> <p>  建立CVS仓库的文件夹应该?#8220;q净”的文件夹Q即只包括源码文件和描述的文件加Q而不应该包括~译q的文g代码{!</p> <p>  三、用CVS</p> <p>  winCVS是一个很好的CVS客户端YӞ在http://cnpack.cosoft.org.cn/down/wincvsdailyguide.pdf可以下蝲到这个Y件的使用手册。这里不在赘qC?/p> <p>  四、用CVS理目</p> <p>  本h正在一加公总事该公司ERP目的开发,在没有用CVS的时候,多次出现了由于不同的开发h员修改同一E序Q而导致程序错误,解决版本控制问题q在眉睫?/p> <p>  ׃q个目采用Linuxq_下JAVA开发,使用的开发工具Jbulider是支持CVSq行目理的,作ؓȝ序员Q我军_采用CVSq行版本控制Q首先参照上文在Linux服务器上建立了CVS服务Q然后我把我本地的工E文件传x务器?/p> <p>  例如Q我的工E文件在F:\ERP下,我把ERP下的erp.jpx文g、defaultroot文g夹和src文g夹上传至服务?usr/local/erp下,然后登陆Linux服务器,登陆的用hCVS的用P其环境变量要正确Q我的用户名为adminQ?/p> <p>  #cd /usr/local/erp<br />    #cvs import -m "this is a ERP project" erp v_0_0_1 start</p> <p>  q样名ؓerp的CVS仓库徏立了?/p> <p>  之后开发小l的成员可以用winCVS把该目下蝲到本圎ͼ</p> <p>  打开winCVS</p> <p>  点击工具栏Create -> Create a new repository... 弹出H口<br />    在Grenral?br />    Enter the CVSROOT填写admin@192.168.1.9:/home/cvsroot 其中admin是cvs的用P在本例中admin也是linux的系l用P192.168.1.9是服务器的地址Q?home/cvsroot是CVS的主目录Q参考上文?br />    Authentication中选择"passwd file on the cvs server"<br />    Use version中选择cvs 1.10 (Standard)</p> <p>  其它w认即可?/p> <p>  认后,点工hAdmin --> Login... 会提C入密码,输入密码后,看看winCvs的状态栏。如果提C?/p> <p>  *****CVS exited normally with code 0*****</p> <p>  表示d正常?/p> <p>  点击工具栏Create --> Checkout module...弹出对话框,其中的Checkout settings中<br />    Enter the module name and path on the server 填写erpQ即我们建立的名为erp的CVS仓库<br />    Local folder to checkout to 选择要下载到本地的目录,我选了F:\myerp</p> <p>  其它目可以默认Q确定后可以下载到本地了,在F:\myerp\下会有一个erp文g夹,其文件结构和F:\erp下的文gl构是一L?/p> <p>  用Jbulider打开F:\myerp\erp\下的erp.jpx文gQ这个工E文件就可以使用了?/p> <p>  在Jbuilder的工hTeam --> Select Project VCS 弹出对话框,选择CVS</p> <p>  对于你要q行修改的文Ӟ在Project View中点中该文gQ然后点右键Q探出快捯单,选择CVS --> CVS Edit "xxxx.javaQ文件名Q?</p> <p>  W一ơ用可能会提示CVS服务器的密码?/p> <p>  在修改之前还要选择CVS --> Update "xxxx.javaQ文件名Q?</p> <p>  修改之后选择CVS --> Commit "xxxx.javaQ文件名Q?</p> <p>  q样Q修改的文g׃存到CVS服务器了QUpdate的目的是下蝲、比较文件。每ơ在修改之前都UpdateQ保持最新版本?/p> <p>  CVS在项目管理用中实起到了良好的效果Q仔l研ICVS的命令,可以更好的发挥CVS在版本控制上的能力?/p> <p>  我的QQ?0896Q欢q大家来交流Q也可以到我的论坛上讨论 http://www.laoer.com</p> </div> <img src ="http://m.tkk7.com/conans/aggbug/210983.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/conans/" target="_blank">CONAN</a> 2008-06-26 23:38 <a href="http://m.tkk7.com/conans/articles/210983.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CVSҎ文g扩展名判断文件类型Text/Binary http://m.tkk7.com/conans/articles/209874.htmlCONANCONANSun, 22 Jun 2008 10:40:00 GMThttp://m.tkk7.com/conans/articles/209874.html今天很失败,M一个中午的Visio程图,在CVS上提交的时候,提交是成功了Q就是文件被破坏掉了Q大变成了1KB。仔l看了一下,原来是Visio的文?vsd的被CVS识别成Text的了Q但是我定我添加这个文件的时候是按照Binary的方式来d的啊。于是l做实验Q发现果然是Q即使你按照Binary的方式添加,在提交完毕之后,变成了Text方式了?/p>

 

于是查看CVS的文档,也就?kb参数来设定文件的cd。我切换到命令行方式Q还是一P被识别成Text的了?/p>

 

于是x一U方式,来解册个问题,否则在之后的工作中会有麻烦的Q其实PowerDesigner的文?pdm的也存在q种情况Q但是至?pdm是真正的文本文gQ即使发生了冲突Q虽然几率较,也是可以在文文本~辑器中修改回来Q但是Visio׃一样了Q?vsd可是真正的Binary的文档啊Q?/p>

 

看到cvs文档上说Q可以修改cvswrappers文g来设定扩展名对应的处理方式,是Textq是Binary的方式,因ؓCVSq不能准判断你加入的文件的cd?/p>

 

1. 使用WinCVS客户端或者cvs.exe命o行工h出CVSROOTq个ModuleQ需要注意的是,q个Module的安全界别设|比较高Q需要Administrator或者有Admin权限的用h可以。可以登录到服务器查看一下CVSROOT\CVS\fileattr.xml

2. 修改cvswrappers文gQ里面有单的说明Q在最后加入两行:

    *.vsd -kb

    *.pdm -kb

    如果是其它的CVS版本Q参考cvswrappers文g注释部分的内?/p>

3. Commit 文g cvswrappers

 

然后可以添?vsd的文件了Q果然能够识别成Binary的了?/p>

 

上面描述的问题和解决办法?CVSNT 2.5 版本的,

在CVSNT 2.0版本中,如果你Add文g时用Binary方式Q那么之后的操作是以Binary对待了?/p>

其它版本没有环境试了?/p>

CONAN 2008-06-22 18:40 发表评论
]]>
վ֩ģ壺 ҹѸӰԺ| gavѲƵ| ɫĻվ| ɫwwwƷƵѿ| 㽶Ƶ| jizzjizz߲ž| ¸Ļ| ޳AVƬ߹ۿ| йëƬѹۿƵ| Ʒ޾Ʒ| Ļѹۿ| AVרAëƬ| þ91ۿ| ŮƵ| ëƬѹۿƵ| ֻ߿Ƭ| Vһۿ| þҹ| wwwxxx| ޳һ| þþþùɫavѿ| ҹþþþþ| | һɫվ| һѹۿ| һѹۿƵİ| 뾫Ʒ| ճˮþ޾Ʒtv| Ƭ߹ۿ| ޾߹ۿ| 98Ƶ| AëƬþ| ۺƵ| ڵĤѿ | Ļ߹ۿ| AëƬѿ| þ޾ƷƷ| Ƶ| ѹۿ| ޳avƬ| ޹˾Ʒ91þþ|