|
|
October 22
什么是HDR?
谈论游戏画面时常说的HDR到底是什么呢?HDR,本身是High-Dynamic Range(高动态范围)的缩写,这本来是一个CG概念。
计算机在表示图象的时候是用8bit(256)级或16bit(65536)级来区分图象的亮度的,但这区区几百或几万无法再现真实自然的光照情况。HDR文件是一种特殊图形文件格式,它的每一个像素除了普通的RGB信息,还有该点的实际亮度信息。普通的图形文件每个象素只有0 - 255的灰度范围,这实际上是不够的。想象一下太阳的发光强度和一个纯黑的物体之间的灰度范围或者说亮度范围的差别,远远超过了256个级别。因此,一张普通的白天风景图片,看上去白云和太阳可能都呈现是同样的灰度/亮度,都是纯白色,但实际上白云和太阳之间实际的亮度不可能一样,他们之间的亮度差别是巨大的。因此,普通的图形文件格式是很不精确的,远远没有纪录到现实世界的实际状况。所以,现在我们就要介绍一下高动态范围图像(简称HDRI)。
什么是HDRI?
HDRI是High-Dynamic Range (HDR) image的缩写,就是为了解决这个问题而发明出来的,简单说,HDRI是一种亮度范围非常广的图象,它比其它格式的图像有着更大亮度的数据贮存,而且它记录亮度的方式与传统的图片不同,不是用非线性的方式将亮度信息压缩到8bit或16bit的颜色空间内,而是用直接对应的方式记录亮度信息,它可以说记录了图片环境中的照明信息,因此我们可以使用这种图象来“照亮”场景。有很多HDRI文件是以全景图的形式提供的,我们也可以用它做环境背景来产生反射与折射。这里强调一下HDRI与全景图有本质的区别,全景图指的是包含了360度范围场景的普通图象,可以是JPG格式,BMP格式,TGA格式等等,属于Low-Dynamic Range Radiance Image,它并不带有光照信息。
什么是HDRI文件?
HDRI文件是一种文件,扩展名是hdr或tif格式,有足够的能力保存光照信息,但不一定是全景图。Dynamic Range(动态范围)是指一个场景的最亮和最暗部分之间的相对比值。一张HDR图片,它记录了远远超出256个级别的实际场景的亮度值,超出的部分在屏幕上是显示不出来的。可以这样想象:在photoshop里打开一张从室内往窗外外拍的图片,窗外的部分处在强烈的阳光下,曝光过度,呈现的是一片白色,没有多少细节。你将毫无办法,调暗只会把变成灰色而已,并不会呈现更多的细节。但如果同一场景是由hdr纪录的话,你减低曝光度,原来纯白的部分将会呈现更多的细节。
什么是HDR特效?
现在将HDR和游戏联系起来。HDR在游戏中特指HDR特效。HDR特效是与Vertex Shader/ShaderModel/Soft shadows/Parallax Mapping等等并列的图像渲染特效。想要实现HDR特效,首先,游戏开发者要在游戏开发过程中,利用开发工具(就是游戏引擎)将实际场景用HDR记录下来,当然开发技术强的开发组会直接用小开发工具(比如3D MAX的某些特效插件)创造HDRI图像;其次,我们的显卡必须支持显示HDR特效,nVIDIA的显卡必须是GeForce 6系列或更高,ATI显卡至少是Radeon 9550或以上。HDR特效最早是在nVIDIA的显卡实现的,但是ATI的SMARTSHADER技术也包含HDR技术。
HDR特效是什么样子的?
目前将HDR特效表现的比较完美的游戏之一是育碧的《细胞分裂:混沌法则》,大家先请看《细胞分裂3》高低端显卡特效对比,文章里面右面的图都是开启了HDR特效的画面,比如下面两张画面:
ShaderModel 1.1 ShaderModel 3.0/HDR/Soft shadows/Parallax Mapping
本文写成之时,《细胞分裂:混沌法则》还没有上市,因此现在先介绍一下04年的两款大作《毁灭战士3》和《半条命2》的HDR效果:
《半条命2》打上HDR Mod之后的效果
《毁灭战士3》开启和未开启HDR效果的比较
《毁灭战士3》开启和未开启HDR效果的比较
《孤岛惊魂》开启HDR特效之后的画面
《手足兄弟连:进军30高地》开启HDR之后的画面
HDR特效如何实现?
实现HDR效果并不复杂,但是如果想正常实现的话,你必须有GeForce 6系列或更高的nVIDIA显卡,至少是Radeon 9550或以上的ATI显卡。另外CPU和内存都要够劲,CPU至少在奔腾4 2.8G以上。必须安装DirectX 9.0c。尽量安装最适合自己显卡的驱动程序,如果是ATI显卡,一定要安装最新的显卡驱动,比如ATi Radeon系列催化剂驱动 5.3版,如果是nVIDIA显卡,请参考太平洋电脑网的相关资料,挑选最适合自己显卡的驱动程序,我站有nVIDIA ForceWare驱动71.84 WHQL版。
注意:根据目前的资料,只有《孤岛惊魂》和《手足兄弟连》的HDR特效是真正的,其他的游戏的所谓HDR特效只是仿真的。下文不再强调全真和仿真。
1,毁灭战士3
首先介绍《毁灭战士3》如何实现模拟HDR特效。有国外的玩家专门针对ATI显卡制作了一个HDR特效小工具“pssControl2”,这个工具由于开发较早,不保证对现在的ATI显卡和现在的催化剂驱动都适用。pssControl2需要配合HDR的pss效果包来运行。我站提供了下载,点击进入下载页面。具体运行步骤如下。
双击pssControl2.exe执行文件,点击“Browse”,选择pss效果包的“HDRish.pss”,不关闭窗口的前提下,运行《毁灭战士3》即可。如果需要恢复,则点击“Turn off SMARTSHADER”并关闭pssControl2即可。
2,孤岛惊魂
《孤岛惊魂》必须安装v1.3版或者v1.31版升级补丁(点击进入下载页面),首先在显示属性的高级属性中将所有显卡设定调至最高,关闭抗锯齿(也就是关闭3D平滑处理,因为nVIDIA的GeForce 6800系列硬件无法支持多重取样下的16位精度的浮点渲染目标,不过事实上开启抗锯齿也可以运行),开启《孤岛惊魂》,在控制台中键入:
r_hdrrendering 7
也可以在游戏快捷方式命令后加上:
-DEVMODE "r_hdrrendering 7"
这串的最前面要加一个空格,也就是类似 "d:\FarCry.exe -DEVMODE "r_hdrrendering 1" 这样就可以开启《孤岛惊魂》的HDR特效。
上面命令行中的数字 7 可以改成 0、1、10、20等数字,都有不同的表现度,大家可以试试。
3,半条命2
作为04年的以画面而出众的大作,《半条命2》开启HDR特效足以令玩家将《半条命2》重玩一遍。利用Radi-8工作室开发的一个Mini-Mod就可以实现《半条命2》模拟的HDR特效,显卡也不一定要GeForce 6系列。方法也很简单,首先从我站下载HL2 R8 HDR Bloom Mini-mod,之后就是安装过程,如果你安装《半条命2》之后没有重装系统,那么该MOD会自动搜索安装目录,关掉Steam重新启动,这时该MOD就会出现在第三方游戏列表中。接下来的工作就不介绍了。
命令行:
mat_R8Bloom (默认: 1) : 0=关闭效果, 1=默认设置, 2=让光晕效果模糊一些 mat_R8BloomLvl (默认: 0.55) : 控制光晕的亮度 mat_R8BloomGamma (默认: 0.75) :控制游戏的总体gamma值(当启用效果时),值越低越亮。
4,手足兄弟连:进军30高地
游戏默认就开启了HDR特效,不过可以通过修改 \Ubisoft\Gearbox Software\BrothersInArms\System\User.ini 来微调。
[gbxGameplay.WargamePlayerController] NoBodyView=True HDRGlobalColor=(B=128,G=192,R=192,A=1) HDRFilterScalePass1=1.000000 HDRFilterScalePass2=1.120000 HDRFilterScalePass3=1.120000 bFullTimeHDR=True
等于号后面的1.000000、1.120000都可以调节,比如调节到2.000000,大家可以去看看效果。
5,细胞分裂:混沌法则
游戏还未上市,资料待补充。
6,霹雳小组4
游戏还未上市,资料待补充。
ZZ from http://fanball.bokee.com/2876074.html August 06 周末一人实在无聊,想想好久也没得运动了,便跑去游泳。
这么热的天又碰上这么个好日子,人比我想象中的还要多,此时恍然明白“包玉刚”的真谛--“包浴缸”。。。
既然来了我还是不想浪费,尽量地寻找空间多多“游动”。天空“作美”,还赐了场暴雨,这下室内场真的是人满为患。于是我就坐一边休养,等雨停。游泳馆的磅秤我不知道是不是失准了,我上去“裸称”了下,居然比毕业时重了8斤,有点夸张,明知道这个结果有些水分,心理却也着实阿Q了吧,嘿嘿:)
前后泡了两个小时,效果还是不错的,整个人感觉舒爽了不少,也可能是早上睡眠充足的缘故。
在公司里只有打乒乓球馆,不过也正合我意,平时晚上也会和朋友一起挥几把,权当松展筋骨,呵呵。
身体还是要维持好健康,所以也“逼”着自己多去运动,希望自己可以一直坚持!
第一:你们彼此都是对方最好的朋友,不带任何条件的,喜欢与对方在一起。
第二:彼此很容易沟通、互相可以很敞开地坦白任何事情,而不必担心被对方怀疑或轻视。
第三:两人在心灵上有共同的理念和价值观,并且对这些观念有清楚的认识与追求。
第四:你们都认为婚姻是一辈子的事,而且双方(特别强调“双方”)都坚定地愿意委身在这个长期的婚姻关系中。
第五:当发生冲突或争执的时候可以一起来解决,而不是等以后才来发作。
第六:相处可以彼此逗趣,常有欢笑,在生活中许多方面都会以幽默相待。
第七:彼此非常了解,并且接纳对方,你知道对方了解你的优点和缺点
,仍然确信你是被他所接纳。
第八:从最认识你,也是你所最信任的人之处,得到支持和肯定。
第九:有时你们会有浪漫的感情,但绝大多数的时候,你们的相处是非常满足而且自在的。
第十:你们有一个非常理性、成熟的交往,你们双方都感受到,在许多不同的层面上,你们是很相配的。
July 22
|
DivX
DivX 是将影片的音频由MP3来压缩、视频由MPEG-4技术来压缩,最后再将两部分合成制作而成的。由于MP3和MPEG-4超强的压缩能力,使得影片的容量急剧减少,可以将一部2G大小的DVD影片压缩到一片650M的CDR上。
由于美国一方面禁止 MPEG-4 技术的流传出境和生产任何有关 MPEG-4 的硬件,该技术被美国一骇客组织破解并且他们发现只要在 MPEG-4 技术上加上 MP3 的音频压缩技术就可以完美的将 DVD 转到一张普通的 CDR 上。于是他们迅速发展了该技术,把它命名为"DivX"并于在互联网上发布。其后 DivX Networks Inc. 在此基础开发了新的 DivX 版本并将其商业化。
目前有三种 DivX 编码器:DivX 3.x 是最著名的而且到处都有,它又称为 DivX ;-),实际上就是 Microsoft 的 MPEG-4 v3 Codec 的 hack 版本。第二个是 DivX 4,DivX Networks Inc. 完全重新编写的作品,但是由于他们又推出了 DivX 5 所以目前已经不用了。DivX 5 提供更好的图像质量和更多的功能。
XviD
XviD 是一个开放源码的 MPEG-4 多媒体解码器,它是基于 Open DivX 编写的。XviD 是由一群原 Open DivX 义务开发者在 Open DivX 于2001年7月停止开发后自行开发的。
XviD支持多种编码模式,量化 (Quantization) 方式和范围控,运动侦测 (Motion Search) 和曲线平衡分配 (Curve),动态关键帧距 (I-frame interval),心理视觉亮度修正,演职员表选项,外部自定义控制,运动向量加速 (Hinted Me) 编码,画面优化解码等众多编码技术,对用户来说功能十分强大。
历史
1998 年以前, 在 PC 上能用的唯一 MPEG-4 编码器就是由微软所开发的, 包括 MS MPEG4 V1、MS MPEG4 V2、MS MPEG4 V3 的系列编码核心。其中前面两种都可以用来制作 AVI 档案, 至今都作为 Windows 的默认组件。不过 V1 和 V2 的编码质量都还不太好, 直到 MS MPEG4 V3 开始, 画面质量有了显着的进步。不过微软却决定仅将这个 MS MPEG4 V3 的视频编码核心封闭在 Windows Media 流媒体技术, 也就是我们熟知的 ASF 档案之中, 不再能用于 AVI 档案。ASF 档案当然有一些好处, 但是过于封闭甚至不能被编辑, 惹恼了天不怕地不怕的骇客。很快便有骇客小组修改了微软的 MS MPEG4 V3, 解除了不能用于 AVI 档案的限制, 并开放了其中一些压缩参数, 由此, 也就诞生了我们今天所熟悉的 MPEG4 编码器 DivX 3.11。
DivX广泛流行, 成为 DVDRip 的标准, 问题是, 它的基础技术是非法盗用微软的, 只能在地下里流传却上不了台面, 无法进行更广泛的产品化, 更无法生产硬件播放机。在这种情况下, 一些精通视频编码的工程师 (包括原 DivX 3.11 的开发者) 成立了一家名为 DivX Networks Inc. 的公司, 简称 DXN。DXN 发起一个开放原始码项目 Project Mayo, 目标是开发一套全新的、开放原始码的 MPEG4 编码软件。特别是完全符合 ISO MPEG4 标准的 Open DivX CODEC 吸引了许多软件高手参与, 并很快开发出Open DivX 编码器和译码器原型, 之后又开发出更高性能的编码器 Encore 2 等等。这一时期, 主要编码工作是 DXN 的人在做, 而许多技术难关的解决得力于来自开放原始码社会的帮助。
就在一切都看起来进展顺利的时候, 好戏上演了。Project Mayo 当然是开放原始码, 但不是依据 GPL (通用公共许可证, 一种开放原始码项目中常用的保障自由使用和修改的软件或原始码的协议) 。DXN 在设计授权协议时留了一手, 2001 年 7 月, 就在 Encore 2 基本成型, 差不多可以产品化的时候, DXN 另搞了一个 DIVX.COM 网站, 封闭了原始码, 发布了他们自己的 DivX 4。DivX 4 的基础就是 Open DivX中 的 Encore 2, 但利用了 DivX 的牌号, 可以说出乎意料的摆了所有人一道。由于 DXN 不再参与, Project Mayo 陷于停顿, Encore 2 的原始码也被 DXN 从服务器上撤下。经过激烈的争论, DXN 当然承认 Encore 2 在法律上是开放的, 但仍然拒绝把它放回服务器。开放原始码社会就这样被狠狠地涮了一回。
Open DivX 尚不能实际使用, 而 DivX 4 (以及后续的收费版本 - DivX 5) 等等都成了私有财产, 许多人为打破微软垄断而无偿付出的智能和劳动仅仅是帮助了 DXN 发财, 这种结果当然是不能被接受的。为此, 整个 0dayz 组织永远的拒绝了 DXN 公司的 DivX4\5, 而原 Open DivX 开发组中的幸存者, 逐渐重新聚拢开发力量, 在最后一个 Open DivX 版本的基础上, 发展出了 XviD。
劫后余生的 XviD 到线在又度过了近 1 年时间, 它继承并发展了 Open DivX Encore 2, 性能得到极大提高, 被认为目前世界上速度最快的 MPEG4 CODEC。XviD 重写了所有代码, 并吸取前车之鉴依照 GPL 发布 (注意不再是 LGPL, 所以谁要是想用它做成产品而不开放原始码是非法的) 。不过, 因为 MPEG4 还存在专利权的问题, 所以 XviD 只能仿照 LAME 的做法, 仅仅作为对如何实现 ISO MPEG-4 标准的一种研究交流, 网站上只提供原始码, 如果要使用就要自己编译原始码或者到第三方网站下载编译好的可运行版本。 | July 18
上 邪 (汉古代经典爱情诗)乐府民歌
上邪 我欲与君相知 长命无绝衰 山无陵 江水为竭 冬雷震震 夏雨雪 天地合 乃敢与君绝
怨情 (唐古代经典爱情诗)李白
美人卷珠帘,深坐颦蛾眉。 但见泪痕湿,不知心恨谁。
春思 (唐古代经典爱情诗)李白
燕草如碧丝,秦桑低绿枝。 当君怀归日,是妾断肠时。 春风不相识,何事入罗帷?
望夫石 (唐古代经典爱情诗)王建
望夫处,江悠悠,化为石,不回头。 山头日日风复雨,行人归来石应语
相思怨 (李冶)
人道海水深,不抵相思半。 海水尚有涯,相思渺无畔。 携琴上高楼,楼虚月华满。 弹著相思曲,弦肠一时断。
卜算子 答施 (宋)乐婉
相思似海深,旧事如天远。 泪滴千千万万行,更使人、愁肠断。 要见无因见,拚了终难拚。 若是前生未有缘,待重结、来生愿。
卜算子 (宋)李之仪
我住长江头,君住长江尾。 日日思君不见君,共饮长江水。 此水几时休,此恨何时已。 只愿君心似我心,定不负相思意
采桑子(宋古代经典爱情诗)吕本中
恨君不似江楼月,南北东西,南北东西,只有相随无别离。 恨君却似江楼月,暂满还亏,暂满还亏,待到团圆是几时?
July 15
有做DVD/CD Servo的同行吗?进来聊下 本人一直在深圳做DVD/CD等产品的软件开发与技术支持工作,在这个行业混了8年了.颇有些感受. 原来做过ESS解码,PHILIPS CD Servo,现在做DVD Servo.也接触一些光头技术.总的来讲,这么多年 我虽然换了几家 公司,但是都在DVD/CD/MP3等数码产品领域,一直做软件方面,一直从前端Servo,光头, 到后端解码都有一定了解,所以对整个DVD系统和软件流程我都比较熟悉.当初选择做Servo,就是 想更全面的了解DVD系统,提高自己,使自己多些机会.事实证明我的选择还是对的,我知道很多做后端解码的 同行,他们也只能做一些UI部分,真正能深入到底层解码的很少.而对整个系统知道得很有限,因为关键的 前端数据处理没办法了解,不知道前面的DATA如何出来的,如何处理的.当然现在的技术分工很细,每个人都 只做一部分,但是要做整个系统,最好还是要各个主要环节都去做下,但只要精通其中一个环节就可以了. 举个简单列子: 我们平时经常会遇到一些碟片播放问题,如DVD蝶片有停顿.前端和后端就容易互相推,到底是哪部分的问题,如果你 都各环节比较熟的话我想不难判断吧.只要将碟片用Servo来做分析,读一下误码率,3T signal,jitter, 测下Servo控制信号,如果正常那肯定是后端MPEG除了问题,否则就要从前端找问题了. 还有,有时不能读DIVX碟片或画面不连续,其实用上面方法很容易确定.一般都是后端MPEG 支持不同码流的DIVX不好.
不过现在深圳做Servo的也应该多了,原来很少,很难找到高手,工资也一般比解码要高不少.到现在可能还有些差距. 做Servo的其实难度要大些,需要的知识面也要广.不但要懂软件,自动控制,MATALAB,光学理论, 光头技术,信号处理技术.都要有 一定的了解.所以,即使现在很多公司要找个Servo高手也不那么容易.
本人可不算啥高手,但对于Servo控制还是有些经验的.尤其是跳轨控制(包括单轨跳,多轨跳).其实主要是FOC与TRK的控制,别的SPINDLE 和SLEDGE一般不容易出问题.当然还有一些自动调较也很重要,如Dark level,RF Gain,Mainbeam Gain,EF gain, AGC loop gain,EF balance ,Foc balance.很多Servo方案对上续处理有些是硬件自动完成的,你只要做一些 configure.而我基本上都是靠纯软件来实现的,虽然很繁琐但是能更深入的了解Servo的原理.最后还有最重要的PID LOOP的 控制.这就需要扎实的自动控制理论.一般PID LOOP不需要你设计,但要会调较PID参数,控制不同的转頻点和Low feq Gain,带宽,Gian margin, Phase margin.一般要用MATALAB软件进行模拟.
另外,做Servo还要经常学会分析各种数字信号.如RF,3T signal,FE,TE,FACT,TACT,Mirror,FOK等信号. 尤其在做跳轨时,要结合各种信号才能把Servo调到最优.相信各位在调各种烂碟时(如磨花,翘曲,伞形,划伤,偏心等) 最头疼吧,其实我也有过. 当只要多结合信号分析,加上软件调整,是可以找到方向的.
好了,就罗唆这么多吧.以上只是个人的观点.欢迎Servo同行指正,也希望和大家交流经验和共同提高.
请联系:szkevinchen@21cn.net
CVS――Concurrent Versions System并行版本系统; 是一个标准的版本控制系统; 对代码进行集中管理; 记录代码所有的更改历史; 提供协作开发的功能; 支持多人同时CheckOut与合并。 以客户端/服务器模式工作,所有的用户都在客户端进行CVS操作,而所有命令的执行都在CVS服务器端进行。
- CVS仓库:又称主拷贝,是CVS系统保存软件资源的地方。所有项目的所有文件的所有版本都保存在这个仓库中。
- 版本:开发人员每次向CVS提交所做的修改就形成了一个新版本。
- 工作拷贝:从CVS服务器端取出的,保存在我们正在使用的客户端计算机上的代码拷贝。每个人员都有一个属于自己的工作拷贝。
- 检出代码(创建工作拷贝check out):从服务器取出代码,就是创建工作拷贝的过程。
- 提交代码(commit):将代码送到服务器保存,commit又叫作check in。
- 导入代码(import):将未被CVS进行版本管理的代码引入CVS系统中,由CVS开始对它进行版本管理。
- CVS日志:CVS用来记录每次操作的内容的信息。日志信息可以用cvs log命令来查看。
- 更新(update):在协同开发环境下,将其他人所作的最新修改从CVS仓库中取到你的工作拷贝中,从而使得你得工作拷贝与仓库中得最新版本保持一致。使用update是同步各个工作拷贝的手段。
- 冲突(conflict):在协同开发的环境下,当两个开发人员对同一个文件进行修改,并且依次提交CVS仓库时就发生了冲突。这种冲突需要开发人员手工消除,并提交到CVS仓库中形成解除冲突之后的新版本。
1.设置环境变量。
set CVSROOT=:pserver:xxx@192.168.0.226:e:/cvsroot
set CVSROOT=:pserver:xxx@ansi.3322.org:e:/cvsroot 2.签出工作版本到工作目录。
$cd
$cvs co account/src/common 该命令只将account/src/common目录结构签出到本地。若使用
则将account下所有目录结构签出来。
3.提交修改的文件到CVS版本库中:
注意若提交多个文件可以输入多个文件名,并以空格分开。若将该目录下所有文件都提交,那么只需
即可。
4.提交新增加的目录或文件到CVS版本库中:
$cvs add <dirname>
$cvs ci <dirname>
$cvs add <filename>
$cvs ci <filename>
5.删除目录及文件,需先删除目录下的文件
$rm <filename>
$cvs remove <filename>
$cvs ci <filename> 再执行
则将该空目录删除(只是删除本地工作拷贝的空目录)。
6.查看文件状态
例如:
$ cvs st ffun.c
=================================================================
File: ffun.c Status: Up-to-date
Working revision: 1.1 Wed Nov 6 11:29:04 2002
Repository revision: 1.1 /szunicom/dev/billing/src/preproc/CDMA/ffun.c,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none) 注意:最重要的是Status栏,可以有以下几种状态:
Up-to-date:表明你的工作拷贝是最新的. Locally Modified:表明你曾经修改过该文件,但还没有提交,你的版本比仓库里的新. Needing Patch:表明有人已经修改过该文件并且已经提交了!你没有修改但你的工作拷贝的版本比仓库里的旧. Needs Merge:表明你修改了该文件但没有提交,而有人也修改了这个文件,并且提交给仓库了。
Locally added:表明使用了"add"命令增加了该文件,但还没有"commit"
Locally Removed:表明你使用了"remove"命令,但还没有"commit"
Unkown:CVS不知道关于这个文件的情况.例如,你创建了一个新文件,而没有使用"add"命令 解决办法: 若状态为Locally Modified,则需执行$cvs ci <filename> 若状态为Needing Patch或Needing Merge,则需执行$cvs up <filename> 将版本库里的文件与工作拷贝合并后,再提交给版本库,使用命令:
$cvs ci <filename>。 若状态为:Locallyadded,则需执行$cvs ci <filename> 若状态为:Removed,则需执行$cvs ci <filename> 若状态为:Unkown,则需执行$cvs add <filename>,$cvs ci <filename>。
7.查看工作拷贝和仓库中最后版本之间的修改
8.查看指定的两个版本之间的修改
$ cvs diff -r 1.1 -r 1.2 <filename>
9.版本回退(取出以前的某个版本) 有两种方式: 一是只把某一版本的文件输出到标准输出上:
$cvs up –p –r <版本号> <filename> “-p”选项让CVS命令的结果只输出到标准输出,而不写入到结果文件中。
另一种是将输出到标准输出的结果重定向到文件中:
$cvs up –p –r <版本号> <filename> > <filename> 如:目前abc.c文件的版本号为1.5,要取出1.2的版本,那么执行
$cvs up –p –r 1.2 abc.c > abc.c 若没有使用“-p”选项进行回退,而是使用了$cvs up –r 1.2 abc.c命令,之后若对1.2版本进行修改后再提交到CVS时,会出现如下提示信息:
cvs ci
cvs commit: Examining .
cvs commit: sticky tag `1.2' for file `abc.c' is not a branch
cvs [commit aborted]: correct above errors first!
解决办法两种方式:
1、修改CVS/Entries文件,将以下黄色标记部分删除即可。
$cd CVS
$ vi E*
/abc.c/1.2/Tue Dec 17 13:33:06 2002//T1.2
2、使用$cvs up –A abc.c命令来消除附着标签,但是该命令是将1.2版本与最新版本进行了合并,还需对abc.c进行修改再重新提交。
10.如何恢复已经删除的文件或目录: 1. 在执行了【Remove】命令之后恢复文件。 ◇ 【Ctrl+L】直接输入命令cvs add xxxxx,或执行【Add Selection】界面操作。 ◇ 这样就可以直接恢复还未提交的删除文件。 2. 在执行了【Commit】命令之后恢复文件。 ◇ 只能用【Ctrl+L】直接输入命令cvs add xxxxx,这时会得到一个空的文件。 ◇ 选中这个空文件,执行【Update】操作,得到这个文件的实体。 ◇ 再次选中这个文件,执行【Commit】操作,得到这个文件最新版本。 3. 由于CVS系统中本质上不会删除任何目录,因此,谈不上对目录的恢复,但是CVS系统默认情况下是要在用户本机上(如:YCW2000)要删除空目录,因此,可以用如下方法得到已被删除的空目录:cvs checkout -p xxx,也可以在Admin=>Preference的【Globals】页面进行设置。
|
|
|
|