<!-- /* Font Definitions */ @font-face {font-family:SimSun; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:宋体; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:NSimSun; panose-1:2 1 6 9 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:modern; mso-font-pitch:fixed; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:"/@NSimSun"; panose-1:2 1 6 9 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:modern; mso-font-pitch:fixed; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:"/@SimSun"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0in; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:SimSun;} h1 {mso-margin-top-alt:auto; margin-right:0in; mso-margin-bottom-alt:auto; margin-left:0in; mso-pagination:widow-orphan; mso-outline-level:1; font-size:24.0pt; font-family:"Times New Roman"; font-weight:bold;} p {mso-margin-top-alt:auto; margin-right:0in; mso-margin-bottom-alt:auto; margin-left:0in; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:SimSun;} @page Section1 {size:8.5in 11.0in; margin:1.0in 1.25in 1.0in 1.25in; mso-header-margin:.5in; mso-footer-margin:.5in; mso-paper-source:0;} div.Section1 {page:Section1;} -->
Unix下常用 CVS命令整理
1.登录:
$export CVSROOT=:pserver:username@the_server_name:/home/cvsroot
Note: pserver是访问方式,如果服务器设置的是口令认证,则是 pserver。
username是 CVS服务器的用户名,可以根据你的设置修改 ;
the_server_name是 CVS服务器的名称或者 IP地址 ;
/home/cvsroot是你的 CVS服务器的 CVSROOT目录,根据你的 CVS服务器设置做修改或者询问管理员.
登陆 CVS服务器:
$cvs login
这时候 cvs会问你口令,请把你在 CVS服务器上的口令敲进去:
Passwd:xxxxxxxx
2. 提交项目 --import
cvs import [-options] repository vendortag releasetag...
Note: 该命令将当前目录下的所有文件 (包括子目录 )导入源代码储存库。
repository :项目名称,在 CVS服务器上会创建以这个名字命名的仓库。
vendortag : 项目分支的总标记。 (不常用 )
releasetag :标识文件的输入层次的标记。 (一般用 start)
使用 import提交项目的时候, CVS会要求对项目进行说明。在默认状态下, CVS会弹出文本编辑器。用户也可以用 -m “log_message”来输入说明信息。
例如
$cvs import -m "upload the first time as new module" judecvs v_0_0_1 start
提示: import 一般在第一次导入 module时使用。后期修改文件后可直接使用 commit命令提交修改的文件。
3. 从 CVS导出项目 --checkout
cvs checkout [options] modules...
此命令将源代码储存库中已有的项目导出到当前目录。
modules :项目名称
例如 ,从仓库中检索出 judecvs项目的源文件.
$cvs checkout judecvs
4.CVS 主要命令 ---update 更新当前工作目录中的文件
cvs update [-options] [files...]
此命令比较指定 CVS源码库中的文件和当前目录下的文件,如果 CVS源码库中有更高版本的源文件,则更新当前目录下的文件。此命令只有在 checkout命令使用过后才能使用。
在执行 update命令时, CVS并不是简单的将新版本覆盖当前文件,而是试图将新版本所做的修改添加到当前文件中去。如果发生冲突, CVS会以字符串 “<<<<<<”和 “>>>>>>”来表示冲突发生。这时候你可以修改文件, 重新提交。
提示:如果你已经做过一次 checkout了,那么不需要重新 checkout,只需要进入 cvstest项目的目录,更新一把就行了:
例如:
$cd judecvs
$cvs update // update 整个目录
5.CVS 主要命令 ---status 如果你不想直接更新 ,只是想看看有没有更新的东西,那么:
$cvs status
会给每个文件有一份状态报告,类似这样:
==================================================
File: client.c Status: Up-to-date
Working revision: 1.1.1.1 'Some Date'
Repository revision: 1.2 /home2/cvsroot/judecvs/client.c,v
这里最重要的就是 Status 栏,这里总共可能有四种状态:
Up-to-date:表明你要到的文件是最新的.
Locally Modified:表明你曾经修改过该文件 ,但还没有提交,你的版本比仓库里的新.
Needing Patch:表明有人已经修改过该文件并且已经提交了 !你的版本比仓库里的旧.
Needs Merge:表明你曾经修改国该文件, 但是别人也修改了这个文件,而且还提交给仓库了!
6.CVS 主要命令 ---commit 保存修改到 CVS中
cvs commit [-lnR] [-m 'log_message' | -f file] [-r revision] [files...]
此命令将当前目录下的源代码与 CVS中最新版本比较,并进行更新。
[-m ‘log_message‘ ] :输入修改说明。
[-r revision] :指定版本。
[files...] :指定修改文件。
$cvs commit -m "add some comments here" filename
系统会提示
CVS: ----------------------------------------------------------------------
CVS: Enter Log. Lines beginning with `CVS:' are removed automatically
CVS:
CVS: Committing in .
CVS:
CVS: Modified Files:
CVS: client.c
CVS: ----------------------------------------------------------------------
退出后,系统询问是否 continue,输入 c,则完成 checkin
Log message unchanged or not specified
a)bort, c)ontinue, e)dit, !)reuse this message unchanged for remaining dirs
Action: (continue) c
Checking in client.c;
/home2/cvsroot/judecvs/client.c,v <-- client.c
new revision: 1.2; previous revision: 1.1
done
如果 CVS上文件已经有其他人更新,也就是我当前工作的不是最新版本,系统提示 commit失败,这时候需要先 update,然后把整合文件再 commit.
cvs server: Up-to-date check failed for `client.c'
cvs [server aborted]: correct above errors first!
cvs commit: saving log message in /tmp/cvsCEjA9N
提示:修改文件之前先 update或者先查看文件状态,确认当前工作版本是最新版本。
7.添加文件到项目中 ---add
cvs add [-k kflag] [-m 'message'] files...
此命令并不真正添加文件,只是将文件注册到项目中,要真正添加文件,还要使用 commit命令。
例如:
$cvs add -m "test add" testadd.c
提示:
cvs server: scheduling file `testadd.c' for addition on branch `v_0_0_2'
cvs server: use 'cvs commit' to add this file permanently
$cvs commit
同 commit过程一样, CVS将 testadd.c添加到项目中
cvs add –kb filename.gif
cvs add –kb filename.doc
// 添加文件为图片, word文档等非纯文本文件,需要用 -kb选项,按照二进制导入
8.CVS 主要命令 ---remove 从项目中删除文件
cvs remove [-k kflag] [-m 'message'] files...
和 add命令一样,此命令并不真正删除文件,只是将文件从项目中取消,要真正删除文件,还要使用 commit命令。
e.g.
$rm testadd.c
$cvs rm testadd.c
系统提示
cvs server: scheduling `testadd.c' for removal
cvs server: use 'cvs commit' to remove this file permanently
$cvs commit testadd.c
此时, CVS才将 testadd.c从项目的最新版本中删除,但是如果它有以前的版本,以前版本依然存在。
10.添加目录:
cvs add dirname
11.察看文件历史:
cvs log filename
cvs history filename
12.比较两个版本:
cvs diff –r1.2 –r1.3 filename
cvs diff filename //当前文件与默认 branch比较
13.恢复旧版本:
cvs update –P –r1.2 filename
14.从指定的 branch update :
cvs upd –r branch-name filename
15.update 干净的文件( no merge):
cvs upd -r GSOL-live -P -C runCreateInquireAllEmail.sh
一些常用命令的简化形式:
cvs co <model>
cvs up filename 提交修改
cvs ci filename 确认修改
cvs log filename 察看修改日志
cvs st filename 察看文件状态
cvs rm filename 将某个源文件物理删除
一些简写行式: ci – commit ; up – update ; checkout --co/get
rm – remove
==================================
EX: commit a new file to cvs from server:
[gsol@uat3 scripts]$ cvs add extract_supp_magAD_IMGURL.sh
cvs add: scheduling file `extract_supp_magAD_IMGURL.sh' for addition on branch `AAA-live'
cvs add: use 'cvs commit' to add this file permanently
[gsol@uat3 scripts]$ cvs commit extract_supp_magAD_IMGURL.sh (can add comment in this step)
RCS file: /data/cvs/enigma3/scripts/Attic/extract_supp_magAD_IMGURL.sh,v
done
Checking in extract_supp_magAD_IMGURL.sh;
/data/cvs/enigma3/scripts/Attic/extract_supp_magAD_IMGURL.sh,v <-- extract_supp_magAD_IMGURL.sh
new revision: 1.1.2.1; previous revision: 1.1
done