如何在CVS中按分支过滤提交历史并查询最后一次提交涉及的文件
解决CVS查询个人最后一次提交及对应文件的问题
看来你遇到的问题是cvs history命令返回了所有分支下的提交文件,而你只想要自己最后一次提交的记录和对应的文件集合。下面给你几个针对性的解决方案:
1. 直接获取最近一次提交的完整记录(含文件)
如果不管分支,只想拿到你最近一次提交的所有信息(包括提交时间、分支、涉及文件),可以用-n 1参数限制只返回最近1条提交记录:
cvs history -u Arkady -c -n 1
这个命令会输出你最后一次提交的详细信息,其中就包含该提交涉及的所有文件。比如针对你的例子,如果最后一次提交是在BRANCH2上,就只会显示myfolder/main.cpp和myfolder/b2.cpp的相关提交记录,不会混进BRANCH1的内容。
2. 针对特定分支查询最后一次提交
如果你明确想查看某个分支下的最后一次提交,可以加上-b <分支名>参数:
cvs history -u Arkady -c -b BRANCH1 -n 1
这样就只会返回BRANCH1分支上你最近的一次提交,完全过滤掉其他分支的内容。
3. 更清晰的文件列表展示
如果觉得history的输出格式不够直观,还可以分两步操作:
- 先拿到最后一次提交的版本号:
cvs history -u Arkady -c -n 1 -T-T参数会简化输出,只保留关键信息(比如版本号1.5.2.1、分支名等)。 - 用该版本号查询具体的文件列表:
cvs log -r 1.5.2.1 -N-N参数会只显示该提交涉及的文件,避免输出冗余的日志内容。
为什么你的原命令会返回所有分支?
你原来的命令cvs history -u Arkady -c -D 2018-02-20没有限制返回条数,也没有指定分支,所以CVS会列出2018-02-20之后你在所有分支上的所有提交记录,自然会包含BRANCH1和BRANCH2的所有文件。加上-n 1就可以把结果限定在最近的一次提交上。
内容的提问来源于stack exchange,提问作者Arkady
相关产品推荐
相关产品推荐

