commit—将文件提交到仓库

  • 语法: commit [-lnRf] [-m 'log_message' | -F file] [-r revision] [files...]
  • 需要: 工作目录,仓库。
  • 修改: 仓库。
  • 同义词: ci

当你需要将工作目录里面的修改合并到源码仓库时,使用 commit 命令。

如果你不指定具体的文件,当前工作目录里面的文件,经过检验,都会被提交。 commit 会谨慎地在仓库中修改那些真正做了变更的文件。默认情况下(或你特别指定了 `-R' 选项),在子目录中的也要检查,如果它们有变更也会被提交; 你可以使用 `-l' 选项让 commit 只针对当前的目录。

commit 会校验选择的文件已经更新到源码仓库的当前修订版; 如果有文件需要首先使用 update (参阅 update) 更新到当前版本,它会通知你,然后不做提交退出。commit 不会为你调用 update 命令,而是让你自行处置。

如果就绪,会打开一个编辑器用来输入日志消息,用来写到一个或多个日志程序 (参阅 modules 和 参阅 loginfo) 并将其放到仓库的 rcs 文件。日志消息可以通过 log 命令看到; 见 log。你也可以在命令行上用 `-m message' 选项指定日志消息,以避免打开编辑器,或者用 `-F file' 来指定包含日志消息的文件。

commit 时,在仓库的 rcs 文件里面会放入唯一的 commitid。同时提交的文件是相同的 commitid。使用 logstatus 命令可以查询 commitid; 见 log, File status

 

commit 选项

commit 支持标准选项(参阅 Common options,了解完整说明):

-l
只在当前目录运行。
-R
递归方式提交。此为默认。
-r revision
提交到 revisionrevision 必须是分支,或者是主干上高于任何已有版本号的修订版 (参阅 Assigning revisions)。你不能提交到分支上的一个特定修订版。

commit 还支持这些选项:

-c
拒绝提交文件,除非用户已经通过 cvs edit 注册了一个有效的编辑。将 ` commit -c' 和 ` edit -c' 放在所有的 .cvsrc 文件里面最有用。通过 cvs edit 注册可追溯的编辑(不会丢失文件的变更)或使用 -f 选项,可以强行提交。要支持 commit -c 要求客户端和服务器的版本为 1.12.10 或更高。
-F file
file 里面读取日志消息,而不是打开编辑器输入。
-f
注意,这不是在 Common options 里面定义的 ` -f' 选项的标准行为。

即使没有修改文件也要强制 cvs 提交到一个新修订版。对于 cvs 1.12.10 版本,它使 -c 选项被忽略。假如当前的 file 修订版是 1.7,那么下面的命令是相等的:

          $ cvs commit -f file
          $ cvs commit -r 1.8 file
     

`-f' 选项禁止了递归(如同使用 `-l')。要让 cvs 提交所有子目录里面的所有文件,必须用 `-f -R'。

-m message
message 作为日志消息,而不是打开编辑器输入。

 

commit 示例

提交到分支

你可以用 `-r' 选项提交到分支修订版(小数点是偶数)。要创建分支修订版,需要用 rtagtag 命令里面的 `-b' 选项(参阅 Branching and merging)。之后,checkoutupdate 就基于新创建的分支。从这一刻起,这些工作源码的修改 commit 都自动添加到分支修订版,也就是不会干扰主线上的开发。例如,你给产品的 1.2 版做了个补丁,即使已经开发到了 2.0 版,你也可以:

     $ cvs rtag -b -r FCS1_2 FCS1_2_Patch product_module
     $ cvs checkout -r FCS1_2_Patch product_module
     $ cd product_module
     [[ hack away ]]
     $ cvs commit

因为 `-r' 选项是粘性的,所有工作都自动进行。

编辑完之后建立分支

当你在进行试验性软件的开发,工作是基于上周检出的修订版。如果小组里面的其他人要与你一同参与这个软件,但又不想干扰主线上的开发,你可以将修改提交到新的分支上。其他人可以检出你试验性的工作,并利用 cvs 解决冲突的特性。场景如下:

     [[ hacked sources are present ]]
     $ cvs tag -b EXPR1
     $ cvs update -r EXPR1
     $ cvs commit

update 命令可以在所有的文件加上粘性的 `-r EXPR1' 选项。注意,你对文件的修改将不会因 update 命令删除。由于 `-r' 是粘性的, commit 将自动提交到正确的分支。你也许会:

     [[ hacked sources are present ]]
     $ cvs tag -b EXPR1
     $ cvs commit -r EXPR1

但这样做,只有这些修改过的文件有 `-r EXPR1' 粘性标识。如果你继续开发,提交时没有指定 `-r EXPR1' 标识,一些文件可能会提交到主干。

其他人要跟你一同进行试验性开发,只需

     $ cvs checkout -r EXPR1 whatever_module

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值