我有一些CVS格式的旧代码(RCS format)。我想避免检查新版本只修复缩进,而不是语法。原始开发人员通常不再拥有帐户(他们已离开公司)。如果我要修复该缩进,那么该更改将在cvs annotate
输出中使用我的用户帐户进行标记,这是不合需要的。由于仅更改了缩进,因此不会更改功能。最终结果是,当文件再次签出时,其缩进被更正,cvs annotate
显示最后一行"真实"变化及其相关作者。
所以,甚至可以直接编辑,v
RCS文件(例如,在锁定的CVSROOT上的文件副本上),或者是否存在检查此类编辑的校验和({{ 3}}暗示了一个"完整性"字段,但不清楚是否会使这种类型的变更失效)?请注意,这是CVS特定的;其他源代码控制系统(如Git)具有内置机制。 (正在考虑迁移到其他系统,但这是偏离主题的)。
RCS format似乎表明有很多工具可用于解析基础RCS格式(,v文件),因此如果确实存在某种类型的校验和,可能会将其用于此基础在文件中。但如果我可以直接进行编辑,那就更好了。
答案 0 :(得分:2)
如果可能,我会避免重写原始,v
文件。那里有很多事情可能会出错,而且每天都可以帮助减少人数。
我建议“撒谎”给RCS。像这样:
$ co -l file.ext
$ prettyformat file.ext
$ lastauthor=$(rlog file.ext | awk '$1=="date:"{print $5;exit}')
$ ci -u -w"${lastauthor%;}" -m'formatting updates' file.ext
我不知道您的prettyformat
命令可能是什么,但您可以将其交换。
这里的基本思想是我们会对每个文件进行更新,但我们会用-w
“伪造”作者姓名。这很好,它只是,v
文件中的文本字符串,没有与之相关的魔法。
如果您还关注日期,也可以使用-d
选项伪造它们:
$ lastmod=$(rlog file.ext | awk '$1=="date:"{print $2,$3;exit}')
$ co -l file.ext
$ prettyformat file.ext
$ lastauthor=$(rlog file.ext | awk '$1=="date:"{print $5;exit}')
$ ci -u -w"${lastauthor%;}" -d"${lastmod%;}" -m'formatting updates' file.ext
这样,如果您将来选择将事物迁移到CVS以外的其他内容,则无论格式更改如何,都将正确记录每个文件的年龄。
答案 1 :(得分:1)
理论上确实可以重写RCS修订文件。但是,在实践中实现起来相当棘手。作为您链接笔记的答案,RCS ,v
文件的内容是(是?):
这意味着要在某处替换特定版本,您必须:
这个过程可能非常容易出错。
伪造用户名要简单得多。生成文件的更新版本并将其作为您打算获得信用/责任的用户提交。 If you control the system, you control whether some credentials are accepted.如果没有,则无论如何都无法重写,v
文件。