我想在运行 cvs commit 命令之前准确了解将提交的内容。我最近刚刚使用添加了一个文件
cvs add myFile
然后使用提交文件
cvs commit -m "my message"
但是当我运行 commit 命令时,我最终修改了其他文件,并删除了我不打算更改或不知道将要提交的文件,因此我必须将这些文件一一恢复。我相信它被称为暂存区?已添加但尚未提交或准备提交的文件在哪里?我只是想看看在实际运行 cvs commit 命令之前会进行哪些更改。
答案1
cvs
好久没用了:sub版本svn
和mercurialhg
比较好。它们具有原子提交(每个文件都一起提交,因此您可以一步角色备份整个提交)。
指定要提交的文件:cvs commit -m '«message»' '«file-names…»'
#↳ cvs --help commit
用法:cvs commit [-cRlf] [-m msg | -F 日志文件] [-r rev] 文件...
和/或用于cvs status
查找您正在寻找的信息。
cvs status 命令是确定哪些文件是最新的以及哪些文件需要提交或合并的快速方法。 ……—— https://www.oreilly.com/library/view/essential-cvs/0596004591/ch03s04.html#:~:text=%20cvs%20status%20command%20is,已合并。
答案2
update
如果您未指定要提交的文件,则可以使用该命令显示将提交的已修改和添加的文件。添加-n
模拟更新(试运行)的选项,例如
$ cvs -n up
cvs update: Updating .
M foo
A yum
显示yum
已添加的文件和foo
已修改的文件(up
是 的别名update
,请参阅cvs --help-synonyms
)。
答案3
由于OP特别关心将提交哪些更改,并且cvs status
如果当前目录中有很多文件,则可能会很长,
cvs status | grep -P 'Status: (?!Up-to-date)'
可用于仅显示尚未受到修订控制且为最新的文件。这可能仍然有一些无关的信息,例如尚未签入且未暂存以进行提交的文件(即 CVS 一无所知的文件)。但应该少费力。这假定 grep 版本支持 -P“Perl 样式正则表达式”选项。
请注意,Freddy 的方法提供了类似的输出并且速度要快得多。