Linux 命令速查
开发工具 man cvs

cvs

早期的集中式版本控制系统

返回

补充说明

cvs 是早期的集中式版本控制系统,曾广泛用于开源项目。客户端通过 checkout 取代码、update 同步、commit 提交,仓库位于服务器,工作副本的每个目录带有 CVS/ 元数据。

它已被 Subversion、Git 等取代:不支持原子提交、重命名跟踪弱、分支操作笨重,新项目不应再选用,只有维护老项目时才会用到。Debian 与 RHEL 的软件包名均为 cvs;服务端可用 cvsd 或由 xinetd 启动 cvs pserver。

认证方式包括 pserver、ssh 等。远程仓库写作 :pserver:user@host:/path,首次使用需 cvs login。注意 CVS 关键字(如 $Id$)会在提交时展开,比较文件时容易产生噪声,必要时用 -ko 检出为二进制模式。

多人同时修改同一文件时,update 会尝试合并并标记冲突,解决后需重新 commit。没有中央锁,冲突处理完全依赖客户端。

语法

cvs [全局选项] 子命令 [子命令选项] [文件 ...]

选项

  • -d 仓库:指定仓库路径或远程连接串;
  • -q:减少提示信息;
  • -n:只显示将执行的动作,不实际修改;
  • -z 级别:传输时压缩。

常用子命令:checkout(检出)、update(更新)、commit(提交)、add/remove(增删文件)、diff(比较)、log(历史)、status(状态)。

实例

# 从远程 pserver 仓库检出模块
cvs -d :pserver:user@example.com:/var/cvs login
cvs -d :pserver:user@example.com:/var/cvs checkout myproject

# 更新工作副本,创建缺失目录并清理空目录
cvs update -dP

# 提交修改并写日志
cvs commit -m "fix null pointer in parser"

# 添加新文件后提交
cvs add newfile.c
cvs commit -m "add newfile.c"

# 查看某文件历史
cvs log main.c

参考链接