跳转到主要内容

准备RCS项目以供cvs2svn处理

项目描述

rcs4cvs2svn为使用cvs2svn处理准备RCS项目。

rcs4cvs2svn对于仍有一些古老的源代码存储在RCS仓库中的开发者来说很有用,他们想要将其迁移到现代的源代码管理系统中。

虽然rcs4cvs2svn不提供直接迁移到任何其他源代码管理系统的可能性,但它创建了一个RCS仓库的副本,该副本可以被cvs2svn处理。

这样,您最终将得到一个Subversion仓库,这已经可能足够了。或者,Subversion为迁移到Git或Mercurial等其他源代码管理系统提供了一个良好的基础,因为大多数源代码管理系统供应商提供从SVN迁移的工具,但不提供从RCS迁移的工具。

(您当然可以使用rcs4cvs2svn作为各种rcs2cvs脚本的替代品。与许多这些脚本不同,rcs4cvs2svn可以处理包含空格的文件名,并处理它遇到的任何错误。)

用法

用法简单

$ python rcs4cvs2svn.py /path/to/rcs/project /path/to/cvs/repository

有几个选项,更多信息请运行

$ python rcs4cvs2svn.py --help

教程

本节介绍了如何将 RCS 仓库迁移到 CVS,然后再迁移到 Subversion。

首先,为名为“hello”的项目创建一个简单的 RCS 仓库,该仓库包含一个名为“hello.txt”的单个文件,具有 2 个版本。

$ mkdir -p hello/RCS
$ cd hello
$ echo "hello world!" >hello.txt
$ echo "Added greetings.\n." | ci -u hello.txt
$ co -l hello.txt
$ echo "hello space!" >>hello.txt
$ echo "Added more greetings.\n." | ci -u hello.txt

现在将 RCS 仓库迁移到 CVS。

$ python rcs4cvs2svn.py hello/ /tmp/hello_cvs/

输出应该是:

INFO:rcs4cvs2svn:create new CVS repository at "/tmp/hello_cvs/"
INFO:rcs4cvs2svn:migrated 1 files from "hello/" to "/tmp/hello_cvs/"

由于 CVS 仍然是一种非常过时的软件项目管理方式,让我们继续到进化的下一个步骤:Subversion。您需要从 <http://cvs2svn.tigris.org/> 获取 cvs2svn

虽然有多种方法可以将 CVS 转换为 SVN,但对于我们的任务来说,最简单的方法是创建一个包含 CVS 作为分支的 SVN 导出文件。

$ cvs2svn --trunk-only --dumpfile hello.dump /tmp/hello_cvs/

现在您可以为 SVN 创建一个仓库并将分支加载进去。

$ svnadmin create /tmp/hello_svn/
$ svnadmin load /tmp/hello_svn/ <hello.dump

关于迁移到更高级的版本控制系统,留给读者作为练习。

许可证

版权 (c) 2006-2011, Thomas Aglassinger。保留所有权利。在 BSD 许可证 下分发。

源代码

源代码可以从 <https://github.com/roskakori/rcs4cvs2svn> 获取。

版本信息

版本 1.2,2011-10-26

  • 修复了可能导致文件名包含非 ASCII 字符或百分号 (%) 的问题的日志记录。

  • 改进了对 CVS 目标文件夹的处理,现在即使 csv init 预期的是一个绝对文件夹,它也可以是一个相对文件夹。

  • 改进了 API:添加了 rcs4cvs2svn.main(),可以从 Python 调用,类似于命令行。

  • 将测试 shell 脚本改为合适的单元测试。

  • 清理了 PEP8 问题。

版本 1.1,2010-07-06

  • 添加了在目标路径不包含 CVSROOT 文件夹时自动创建 CVS 仓库的功能。为了使此功能正常工作,必须安装 cvs 命令行客户端。

  • 修复了从 RCS 复制的保护位,这使得文件被设置为只读(这对于转换为 SVN 没有问题,但强制用户在重复转换时删除 CVS)。

  • 清理了 API。只需 import rcs4cvs2svn 并根据需要调用 initCvsRepository()convertRcsToCvs() 即可。

版本 1.0,2010-07-04

  • 首次公开发布。

版本 0.9,2006-05-01

  • 初始内部版本,用于转换我的部分项目。

由以下赞助

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面