已阅读5页,还剩43页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1.1 软件配置管理(SCM)相关概念,9.1.1 版本管理不同产品的简单介绍 配置管理软件分类: 软件的版本管理(CVS是软件版本管理的工具) 构件管理 缺陷和跟踪管理 产品介绍: 1)高端产品 如:Rational clearCase 2) 中端产品 如:PVCS (pvcs version manager ,pvcs tracker)、Perforce,3)低端产品 vss,1.2 CVS概述,cvs是什么 cvs是Concurrent Versions System的缩写。是强大而复杂的现代版本控制系统。 cvs的特点 免费:作为开放源代码的世界杰作,CVS是免费的。在中国,北京国联捷讯信息技术有限公司()为需要CVS技术支持的公司提供咨询。 跨平台:CVS支持所有的操作系统,而且作为典型的客户/服务器模式的软件,CVS支持跨平台开发, cvs可以用在AIX、 HPUX、Solaris、SUNOS、Linux、 Windows,等不同的平台上开发应用,而共用一个CVS服务器。 强大的分布式开发支持:CVS一直以支持分布式开发作为其基本特征。 支持并行开发:允许多个开发人员对同一个文件进行开发工作,并对多个开发者的工作进行整合。 强大的可塑性:不论是一个源代码组成的项目开发管理,还是代码量超过几百兆的项目,均管理自如。 触发器及定制功能:这种功能帮助开发者将CVS和变动/跟踪系统紧密集成,以形成完整的软件配置管理系统(SCM)。,1.3 CVS的安装和配置,在unix/linux平台上安装CVS服务器 安装是超级用户执行的。假设选择一台Linux服务器,假设主机名为hostcvs。在cvs权威网站上下载包cvs-1.11.1p1.tar.gz(在linux中可能已经包含后CVS)。运行: roothostcvs /root$ gzip dvf cvs-1.11.1p1.tar.gz roothostcvs /root$ tar xvf cvs-1.11.1p1.tar 进入目录cvs-1.11.1p1,运行: roothostcvs /root$ ./configure roothostcvs /root$ make roothostcvs /root$ make install,如果未报错误,则CVS服务器安装OK了。 whereis cvs 指定CVS仓库 cvs仓库(Repository)是保存软件资源的设备,可以根据需要选择一目录作为库的位置,如,/cvsap ,用超级用户建相应目录。 mkdir /cvssrc mkdir /cvssrc/master CVS服务器的初始化 在确定CVS仓库位置后,就可以初始化CVS服务器。在初始化的过程中CVS创建其文件系统,并产生原始内容。在目录/cvsap目录下,以超级用户身份在提示符下执行:,roothostcvs /root$ roothostcvs /root$ cvs d /cvssrc/master init 其中的目录project为项目源代码的资源目录。执行命令: roothostcvs /root$ ls /cvssrc/master CVSROOT roothostcvs /root$ ls a /cvssrc/master/CVSROOT 该目录下是原始内容,如果该目录为空,则初始化失败。 用户组和用户帐号的设立 用户组和帐号的设立原则:进行配置管理的用户和进行开发的用户分别设立不同的用户组,如,cvsadmin和cvsuser 两个组,在两个不同组上建立管理用户和开发用户。 CVS的权限设定的原则是:,CVS用户必须拥有对/cvsap/src/master/CVSROOT目录及其中所有文件的读权限。 CVS用户必须拥有对/cvsap/src/master/CVSROOT目录下history文件的写权限。 CVS用户如果希望对系统中的模块(如,project)代码等资源的修改,必须对该目录有写权限。 对于普通的开发用户应该设为:对/cvsap/src/master/CVSROOT目录及其下的所有文件有读权限;对/cvsap/src/master/CVSROOT/history下的文件有写权限;对某个项目(模块)下的文件有读写权限(如,project)。,区分管理员和普通用户的权限设定 1)添加cvsadmin用户组 2)添加cvsuser用户组 3)添加CVS管理员帐号到cvsadmin 4) 添加CVS普通用户到cvsuser 5) 让cvs管理员拥有对配置目录及其下文件的读写权限,同时给cvs的普通用户对配置目录及其下文件的读权限。 rootcvshost /root $ chgrp R cvsadmin /cvsap/src/master/CVSROOT rootcvshost /root $ chmod R 064 /cvsap/src/master/CVSROOT 6) 给cvs普通用户对目录/cvsap/src/master/project的读写权限 rootcvshost /root $chgrp R cvsuser /cvsap/src/master/project rootcvshost /root $ chmod R 060 /cvsap/src/master/project,CVS的口令服务器 CVS口令服务器配置的目的是使cvs用户的远程计算机能访问CVS服务器。 其方法分两步: 以超级用户在hostcvs服务器上的/etc/services的文件中添加一行:cvspserver 2401/tcp。最简单的方法是执行命令:echo cvspserver 2401/tcp /etc/services。注意:端口号2401不要重。这种方式是IBM UNIX系统。 如果使用的是Redhat6.2及以前的版本或使用inetd超级服务器的UNIX版本,用超级用户在/etc/inetd.conf文件中添加一行,加在末尾:,cvspserver stream tcp nowait root /usr/local/bin/cvs cvs f allow root=/cvswork pserver。 如果是Redhat 7.1或其他新版本的Linux,则用超级用户身份打开/etc/xinetd.conf文件,并在文件中添加: service cvspserver port = 2401 socket_type = stream wait = no user = root server = /usr/bin/cvs server_args = -f -allow-root=/cvssrc/master pserver bind = 本机器的IP地址 ,启动inetd/xinetd超级服务器 配置好的口令服务器是包在inetd/xinetd超级服务器内的一个程序。启动的方法为用超级用户登陆,执行命令: roothostcvs /root$ unset HOME 用来清除超级用户的$HOME的环境变量,否则执行CVS命令会出错。 roothostcvs /root$ /etc/rc.d/init.d/inetd restart 也可能是/etc/init.d/inetd restart。或者 roothostcvs /root$ /etc/init.d/xinetd restart 至此,CVS服务器安装和配置工作完成。,如果是HP UNIX 则启动超级口令服务器的方法为: ps ef |grep inetd 找出inetd进程的进程号 kill HUP 让inetd进程重新读入配置文件使得CVS服务生效 测试CVS口令服务器 在cvshos服务器上,执行如下命令: rootcvshost /root$ telnet localhost 2401,客户端的安装和配置 介绍CVSROOT环境变量设置格式: (19页) 客户端的Unix/linux的安装和CVS服务器安装过程相同,这里不再赘述。CVS for unix/linux客户端的永久配置方法为: sh/ksh,用编辑器打开$HOME/.bash_profile文件添加: CVSROOT=:pserver:cloud4:/src/master export CVSROOT csh,用编辑器打开$HOME/.cshrc文件,在文件的末尾添加:setenv CVSROOT :pserver:public:/cvssrc/master 其中的public为客户端的用户在服务器端的帐户/用户名。,CVS for WinCVS的永久配置为: 在窗口中选择Admin-Preferences并在General选项卡中输入,如图。 关于unix/linux客户端的临时配置: sh/bash: testlinux test$export CVSROOT =:pserver:public:/cvsap/src/master csh: testlinux test$ setenv CVSROOT :pserver:public:/cvsap/src/master,测试远程访问 CVS for unix/linux: testlinux test$ cvs login cvs password: WinCVS: AdminLogin 输入口令即可。 在Visual Studio 中集成CVS (23),1.4 CVS工作原理及基本命令,仓库的概念已经描述,在CVS库中CVS以一种特殊的文件格式(RCS)来保存这些资源。仓库按照目录和文件结构组织。仓库中每个目录对应一个项目,如:和cvsap/src/master在同一层次的目录除CVSROOT外,其他每个目录都应该是不同的项目。其保存了各个版本的文件,并记录了版本的修改信息。 统一文件的不同版本之间具有派生关系,在版本库中只存储不同版本间的改动,从而节约空间。(29页) 工作拷贝是指每个开发人员在开发过程中拥有一个独立于其他开发人员的整个软件项目的全部代码的拷贝,在客户端,它和主拷贝(仓库)构成了CVS客户/服务器模式。工作拷贝的每个目录中有一个CVS目录,其下的文件是cvs管理控制文件。(31页),cvs命令的格式: cvs cvs-option command command-option 如:your_client$ cvs Q check test 可以用命令:cvs -help-commands来查看cvs的命令。 在winCVS中在command line setting 菜单中输入命令即可。 Init命令(初始化版本库) 如:cvs d /cvsap/src/master init import命令 从客户端登陆服务器。在客户端有目录,如,test,其中有源文件和子目录,将目录test下的内容加入服务器作为一个项目(如,project,test),即一个baseline。命令为:,your_client$ cd test your_client$ cvs login (logging in to your server) cvs password * (你的服务器端cvs帐户口令) your_client$ cvs import m “initial import” test SSE start 该命令将当前目录(包含子目录)下的所有内容,都放进CVS系统中,其中, -m 表示在命令中要加注释内容 test 为该项目名称 SSE 为厂商标识 start 为版本标记 没有冲突表示创建新的项目仓库成功。 在WinCVS中可以在菜单中实现。,checkout命令 checkout命令是将我们选定的CVS服务器上指定仓库中的一个项目代码取到本地的工作目录下。 如果要将仓库中的test项目的代码取到本地个人目录下,执行: your_client$ cd $HOME your_client$ cvs checkout test 项目代码会保存在个人目录$HOME/test下供你个人开发或修改。当你打开checkout出的源代码所在的目录,会发现代码中的每个目录(包括每个子目录)中均有名为CVS的子目录。这些目录并不属于代码,它是CVS系统使用的目录,其中保存着CVS管理文件。这是工作拷贝与普通目录文件的不同。这些文件对于CVS很重要。所以不要随便的改变或移动、删除这些CVS目录及其中的文件。 解释CVS子目录中的文件(43页),注意:这里的test为用户的目标目录。根据用户client端的配置:CVSROOT :pserver:public:/cvsap/src/master,命令cvs checkout test 从服务器的库中,即将目录/cvsap/src/master/test下的所以内容包括子目录检出到客户机的$HOME/test目录下,同时生成目录test。当然,也可以检出单个文件。 diff命令 CVS能将你工作的拷贝中的源代码文件与仓库中的版本进行比较,发现差异。(45页)如: your_client$ cvs diff test.c your_client$ cvs diff c test.c 该命令能看到对照的结果。应该注意的是显示内容中的“+”表示添加行,“!”表示修改,其余的显示内容和UNIX系统中的diff命令显示相仿。,your_client$ cvs diff r 1.1 r 2.1 test.c 该命令比较库中两个不同版本文件差异。 commit命令 提交操作会改变仓库内容。提交之后,代码成为整个 系统的一个部分了。由于软件的复杂性,需要对提交进行控制。所以在提交时应当遵循一定的流程,进行一定的软件质量保证(SQA)工作,这些工作包括评审(review)、提交报告等。 提交源代码的命令为: your_client$ cvs commit m “add string variable and header string.h” test.c 注意:如果输出类似以下内容的结果即提交失败,此时应该用update命令更新个人工作目录下的源代码。,cvs commit:Up-to-date check failed for test.c cvs commit aborted:correct above errors first! 这里的“-m”后面的是CVS注释。CVS强制要求用户在任何一次提交、导入等操作时加入注释。养成注释的习惯非常重要。 CVS支持中文注释。如果不在命令行中加入注释,那么CVS将自动启动默认编辑器,请用户输入注释,只有用户保存注释并退出这个编辑器之后,提交才能成功。 update命令 该命令既可针对单个文件,也可针对一个目录,或者整个项目。,更新单个文件 your_client$ cvs update test.c 执行上述命令后,用户当前工作目录中的文件test.c的内容与仓库中的最新版本完全相同了,因为在你checkout该文件后,在修改该文件的过程中可能他人已经修改并提交了该文件,即你的修改不是基于库中最新版本。所以,你必须先update,再提交该文件才能提交成功。不过可能有冲突要解决,原因是对同一个文件的同一处代码进行了不同的修改。解决冲突的办法就是通过编辑文件,修改发生冲突的部分。对于逻辑问题CVS无法发现,所以版本冲突的处理应该与软件开发中的需要相结合。另外,可以通过more命令看以下合并后的文件,如,more test.c。,更新整个项目 your_client$ cvs update 执行上述命令后,用户当前工作拷贝中属于本项目的所有文件与仓库中的最新版本完全相同了。需要注意其警告信息。 log命令 每次提交一个CVS操作时,必须填写日志信息,否则拒绝提交。日志信息可以在命令行中加“-m”参数表示。如果日志过长,可以不用“-m”参数而直接运行,CVS会弹出一个编辑器,让用户在编辑器中输入注释信息。CVS对注释信息没有长度限制。这种日志信息是CVS进行软件变化跟踪的一种机制。,每个版本均有日志信息。用户可以查看某个文件的全部历史日志记录,也可以指定查看某个版本或某个日期的日志记录。查看日志信息使用命令:cvs log(53页) 。 查看文件test.c全部日志,使用命令: your_client$ cvs log test.c 查看test.c文件1.2版本的日志,使用命令: your_client$ cvs log r1.2 test.c 再如:cvs log d“2002-06-012002-07-01;2002-08-012002-09-01” 共享日志在有时很有用,如果一个提交命令一次提交多个文件时,这些文件共享一个日志信息。如果你希望将几个文件一起提交,并且在之后能发现这些文件是同时提交的,则只有相同的日志信息能帮助你实现这一点。如:,没空格,your_client$ cvs commit m “fixed bug no .8888” test.c Makefile your_client$ cvs log test.c Makefile status 命令 该命令是查看已经checkout出来的文件信息,如 : your_client$ cvs status test.c your_client$ cvs status v test.c(同时能查看tag 和branch) 版本回退 (55页) 如果用户提交了一个错误的版本,而不希望错误的版本是当前最新版本,一个简单的方法就是回退。 方法之一,首先更新到最新版本,再取出旧版本重新提交。按下列秩序执行命令:,your_client$ cvs update your_client$ cvs -Q update p r 1.2 test.c test.c(该命令不能在windows上执行) 上面命令假设,现错误版本号为1.3,正确版本号为1.2。该命令中“-Q”是不输出无关的信息。注意不要执行命令cvs update r 1.2 test.c 这样会出现问题。 your_client$ cvs commit m “reverted to revision 1.2” test.c cvs diff r 1.2 r 1.4 test.c 结果可以看出两个版本是否相同 方法之二,用命令: your_client$ cvs update j 1.3 j 1.2 test.c 将1.3版本与1.2版本之间的差异补到1.3版本上去。,your_client$ cvs status test.c 查看checkout出的1.3版本的状态(已经在本地修改) your_client$ cvs commit m “reverted to revision 1.2” test.c your_client$ cvs diff r 1.2 test.c 在项目中添加新的目录和文件命令:add 将工作目录中新加的目录和文件添加到cvs库中的方法: 在工作目录中创建目录和文件后才能进行。 加文件的第一步: your_client$ cvs add newfile 执行第二步: your_client$ cvs commit m “added” newfile,加目录(不管目录是否为空目录)只需一步: your_client$ cvs add newder 注意:目录中的文件需要分别加入。 删除文件命令:remove 必须先删除工作目录中的该文件,删除前应该将修改过的本文件提交保存,作为仓库中的新版本。命令如下: 第一步: your_client$ rm oldfile(该命令不能在windows上执行) your_client$ cvs remove oldfile 上两步可以合并: your_client$ cvs remove f oldfile 第二步:your_client$ cvs commit m “removed” oldfile 大家可以按步骤看一下工作目录cvs目录下的Entries文件有什么变化。,对删除的目录 因为cvs不对目录进行版本控制,所以和删除文件不同,没有一个专门的命令。例如(要删除目录olddir): your_client$ ls -a olddir test.c test1.c test.pc your_client$ cd olddir your_client$ ls a tmp.c tmp1.c 以下是删除目录olddir的命令: your_client$ cvs remove f tmp.c tmp1.c Your_client$cvs commit m “removed” tmp.c tmp1.c your_client$ cd your_client$ cvs update P your_client$ cvs update(所有空目录均从工作目录中删除) 这时目录olddir从工作目录中消失 注意:此命令不会将库中新添加的目录取到工作目录中,可执行命令:your_client$ cvs update -d,清除、删除,文件和目录名的更改 因为cvs对文件和目录的更名缺乏支持,所以必须中其他方法处理,该文件makefile名的方法一为: your_client$ mv makefile makefile.mk your_client$ cvs remove f makefile your_client$ cvs commit m “removed for renaming” makefile your_client$ cvs add makefile.mk your_client$ cvs commit m “added as a renamed version of makefile” makefile.mk 方法二(在服务器上直接操作): rootcvshost /root$ cd /cvsap/src/master/test rootcvshost /root$ mv makefile,v makefile.mk,v 这种改法的危险:确保没人访问该文件;不知道什么时候执行的修改;无法获得文件在改名前的旧版本。,改目录名的方法也有两种: 方法一:在工作目录中创建新目录,将旧目录下除cvs目录外的所有文件和子目录移到新目录下。然后删除旧文件,在添加新目录,并添加文件。 your_client$ mkdir newdir your_client$ mv oldnew/* newdir your_client$cd olddir your_client$ cvs remove f * your_client$ cvs update P your_client$ cvs update your_client$cd your_client$cvs add newdir,方法二: rootcvshost /root$ cd /cvsap/src/master/test rootcvshost /root$ mv olddir newdir 这种方法是禁止任何人访问数据库,且方法危险,步主张使用。,1.5 测试环境,进入测试环境步骤: 在个人的pc机上启动linux或windows操作系统,配置好客户端。在linux系统中也可以用startx进入画面操作系统,而后用自带的终端操作命令。在windows系统中直接启动WinCVS即可。 服务器的IP地址:4。服务器中cvs用户为du_cloud/du_cloud(管理用户),userabc/userabc为开发用户。 可以按照前面讲的命令去进行练习。,1.6 CVS的高级主题版本标签和版本分支 1.6.1版本 在配置管理的语境里,版本的概念应该是revision,而不是version。 版本的编号可以系统自己编,也可以用户自定义版本号。在系统自己编号时,如果项目中添加新文件,该文件不版本号码的第一位与本目录下版本号码最高的文件第一位相同,第二位是1。如,一个目录下有三个文件其版本号为1.5、2.8、5.14,那么新添加的文件版本号应该是5.1。如果用户自己给某个版本编号,则这个版本编号必须大于项目中的所有文件的版本号。 1.6.2 版本标签(tag) 版本标签是符号化的版本号码,具有直观、易于记忆和管理的优点。用于阶段式(里程碑)的版本标记。是连接项目中不同文件不同版本的手段。 例子:通过WinCVS展示版本标签 标签的设定 Du_cloudlinux test$ cvs tag rel_1_0_1 test.c,注意:很少给单个文件设标签。 给目录下所有文件贴标签: Du_cloudlinux test$ cvs tag baseline_1 标签的删除、重命名和移动 删除: Du_cloudlinux test$ cvs tag d baseline_1 重命名: Du_cloudlinux test$ cvs tag r baseline_1 baseline_2 Du_cloudlinux test$ cvs tag d baseline_1 移动: Du_cloudlinux test$ cvs tag r 1.6 F baseline_1 test.c 我们将test.c的标签从旧版本1.5移到新版本1.6上。 标签的命名 baseline_1-20030623 Release-20030522 Nightly-20030321 等。,标签的查看 Du_cloudlinux test$ cvs status v test.c Du_cloudlinux test$ cvs status v 确定标签要贴的位置 Du_cloudlinux test$ cvs tag c baseline_1 贴标签时注意不要遗忘已经修改但没有提交的文件。 按约定贴标签(仓库中直接给模块加标签) 按日期贴标签(下例是将模块test的所有文件在20030624号0时0分前提交的最后一个版本贴上标签: Du_cloudlinux test$ cvs rtag D 20030624 nightly_20030624 test 按版本号、已经有的标签贴新标签 Du_cloudlinux test$ cvs rtag r nightly_20030624(老tag) rel_2_1 test(贴新标签但test下新加程序不挂到标签上) Du_cloudlinux test$ cvs rtag f nightly_20030624 test(将test下新加的程序的最新版本强制的挂到nightly_20030624上) Du_cloudlinux test$ cvs rtag r 1.5 rel_2_1 test Du_cloudlinux test$ cvs rtag f 1.5 rel_2_1 test 附着性标签 1)引起附着性标签的命令有:,cvs update r tag(标签号) cvs update D date(更新到不晚于date的最新版本) cvs update r x.y(版本号) test.c cvs checkout r tag(标签号) cvs checkout D date (date之前最近的版本) cvs checkout r x.y test.c 2)附着性标签在版本分支中的使用:保持版本分支号与标签有直接的关系,也就是标签附着在分支号上。 3)保持某些文件的不改动: 只要对几个文件执行了cvs update r 命令,如:cvs update r 1.28 ax.c则版本1.28就会成为附着性标签,以后执行cvs update 命令时这个文件不会更新,直到解除附着性为止。 另外,还有1)中的命令情况相同。 4)解除附着性标签: Du_cloudlinux test$ cvs update A test.c 该命令解除附着性标签,将checkout主干的最新版本并放本地。,1.6.3 如何获得某个特定的版本 根据版本号码或版本标签获得 Du_cloudlinux test$ cvs update r 1.1 test.c 获得某一版本标签的整个软件的源代码: Du_cloudlinux test$ cvs checkout r baseline_1 test 或者跳转到某个版本标签的版本(已经有工作拷贝的情况下) Du_cloudlinux test$ cvs update r baseline_1 根据时间获得特定版本(更新到不晚于date的最新版本) Du_cloudlinux test$ cvs update D “2002-05-08” Du_cloudlinux test$ cvs update D “2002-05-08 23:59:59” Du_cloudlinux test$ cvs update D “2002-05-09” Du_cloudlinux test$ cvs update D “2002-05-08 23:59:59 GMT”(让用户使用GMT时间) 如果要取回旧版本修改,而不是基于最新版本,修改后提交形成最新版本,方法有三: 1)逐个文件处理: Du_cloudlinux test$ cvs update p D “2003-05-18 test.c test.c,方法二:一次性处理所有文件 Du_cloudlinux test$ cvs update A Du_cloudlinux test$ cvs export D “2003-05-18” test Du_cloudlinux test$ cp r test /home/du_cloud *将test.c的baseline_1标签移动从旧版本1.5到新版本1.6上: cvs tag r 1.6 F baseline_1 test.c 1.6.4 版本分支 Du_cloudlinux test$ cvs co d test_brh r base_1 test Du_cloudlinux test_brh$ cvs tag b base_1_brh Du_cloudlinux test_brh$ cvs up r base_1_brh(可以在分支中修改程序如:test.c) Du_cloudlinux test_brh$ cvs ci m “fixed bug no 111” test.c(提交到分支上) Du_cloudlinux test$ cvs up j base_1_brh(分支版本合并到主干版本中) Du_cloudlinux test$ cvs ci m “merged from branch:base_1_brh”,Cvs输出(export)-发布代码(去出没有CVS痕迹的代码) cvs export r rel_1(主干上tag号) d test_release1 test cvs export r brh_tag_brh(分支名称) d shanghai_release test Du_cloudlinux test$ tar cvf test_release1.tar test_release1 Du_cloudlinux test$ gzip test_release1.tar 1.6.5 cvs与二进制文件 重要的二进制文件也需要进行版本管理。如:web应用的大量图片、控件、动态连接库、unix不同操作系统下的编译器、函数库等等。 CVS在处理文本类型的文件,包括各种源代码文件、HTML、XML文件等。CVS对文本类型的文件进行版本管理时,会对文件做一些秘密的处理,在客户端和UNIX仓库之间,CVS会自动进行回车、换行替换和关键字扩展处理。,CVS对二进制文件管理的不好,和ClearCase相比,ClearCase具有文件类型,可以进行二进制文件的比较,但是ClearCase也要尽量避免二进制文件的分支和合并。CVS无法进行二进制文件的合并和分支,不过在实际应用中二进制文件的合并和分支是没意义的。 CVS对二进制文件的管理和保存: 1)在CVS系统中保存二进制文件,应该使用“-kb”选项来禁止CVS对文件进行回车、换行替换和关键字扩展的加工。这个选项只需要在cvs add 命令中使用,本选项是一个附着性选项(如果没有附着性每次执行cvs命令时都需要这个选项)。 如:cvs add kb binfile cvs commit m “added binfile” binfile 注意:二进制文件是原封不动的保存在仓库中,不能按照增量方式保存两个版本的差异,而是累加。 2)恢复二进制版本,如果忘记使用“-kb”选项,添加了二进制文件并提交了仓库,库在UNIX/Linux平台上可以通过以下命令恢复: cvs admin kb binfile(反扩展) cvs update A binfile(工作拷贝中的文件恢复二进制) 如果库在windows平台上只能手工处理。 CVS识别二
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 家长会中安全教育课件下载
- 生态安全课课件
- 燃气安全课件
- 国家开放大学《建筑力学》形考任务试题和答案
- 初级经济师之初级经济师财政税收模考模拟试题(全优)
- 2025物流管理学试题库及答案
- 2025年安全教育培训试题附参考答案【典型题】
- 2025年黄骅市事业单位公共基础知识真题
- 2025年康复医学治疗技术师资格卷真题解析卷
- 《环境工程学》试卷、习题集及答案
- (2025)共青团入团考试题库及完整答案
- 《计量促进民营经济发展壮大若干措施》
- MOOC 创业基础-暨南大学 中国大学慕课答案
- 甾体激素类药物
- 全口无牙颌解剖标志的识别
- GB/T 22240-2020信息安全技术网络安全等级保护定级指南
- 生物技术制药试题及重点
- 络病研究与转化医学课件
- 艾滋病的教学知识课件
- 最新北师大版五年级上册数学《找最大公因数》教学课件
- 护理查房-慢阻肺课件
评论
0/150
提交评论