RCS 可以用于对整个目录进行版本控制吗?

Can RCS be used to version control entire directories?

我希望 RCS 对 /var/spool/cron/crontabs/ 中的所有文件以及在那里创建的任何新文件进行版本控制。但是从文档中可以看出,您必须为其提供文件名而不是目录名。

可以使用 RCS 来执行此操作吗?有没有更好的工具可以使用?

我能够使用名为 etckeeper 的程序,我只需要进行一些修改,因为默认情况下它用于版本控制 /etc。

TL;DR

如果您需要与 RCS 兼容的文件,但还需要使用目录,请使用 CVS。否则,请使用更现代的源代码管理 (SCM) 系统,以您想要的方式处理目录。在某些情况下,转换脚本可以减轻迁移的痛苦,您可以选择这样做。示例包括 svn import and rcs-fast-export piped to git-fast-import.

文件的 RCS; "RCS with Directories"

的 CVS

RCS 适用于单个文件。 CVS uses the RCS file format, but also allows you to add directories。然而,目录在 CVS 中并不是真正的 first-class 对象,而 RCS 根本没有这个概念。如果您迁移到 CVS 只是为了在存在更现代的替代方案时获得目录支持,请谨慎行事。

目录作为第一个Class对象

如果目录对您来说真的很重要,您可能需要考虑转向将目录视为第一个 class 对象的 SCM。 Subversion (svn) 和 Bazaar (bzr) 都将目录视为版本化对象,可能是您不错的选择。

其他系统(特别是 Git)将目录作为树对象的一部分来处理,但并不直接对它们进行版本控制。相反,出于实际目的,您可以将 Git 中的目录版本控制视为从树和文件对象 计算 的东西。这通常工作正常,但它可能不是您的项目所需要的。

您的里程会因其他 SCM 而异。如有疑问,请查阅他们的文档。