cv2hg仓库转换器(基于cv2svn)
项目描述
将CVS仓库转换为Mercurial。与hg convert不同,它可以正确处理标签和分支。
cv2hg用途
cv2hg将CVS仓库转换为Mercurial仓库,并且比hg convert做得更好,可以更好地保留适当的标签和分支点内容。
最重要的案例是手动调整的标签。示例场景
cvs commit file1 file2 file3 file4 cvs tag blah_1-0-0 # covers 1.1 versions of all files cvs commit file2 file3 file1 # makes 1.2 cvs commit file1 # makes 1.3 cvs tag -r blah_1-0-0 blah_1-0-1 cvs tag -F blah_1-0-1 file1
(标签blah_1-0-0被创建为blah_1-0-0的副本,但手动移动到file1的新版本中 – 在CVS世界中回滚错误修复的一种相当常见的方式,因为它避免了CVS分支的创建)。
更简单的情况:某些标签(有意或无意)省略了一些文件。
hg convert在这种情况下会丢失。在聚合的历史中,没有确切的时间点表明file2、file3和file4在1.1,而file1在1.3。因此,hg convert将blah_1-0-1绑定在某个随机位置(通常是初始版本附近)。
cv2hg通过创建修复提交来解决此问题 - 一个人工改变,它将仓库内容与正在转换的标签同步(删除被cv2标签省略的文件,仅对所选文件应用部分更改……)。最终结果是
hg up -r blah_1-0-1
给出与原版完全相同的文件,内容也完全相同,
cvs up -r blah_1-0-1
成本是历史中包含了这些提交 - 在大多数情况下,像
| o |\ | | | | | o [blah_1-0-1] <--- fixup commit |/ | | o |
相同的问题和解决方案也适用于从这样的标签开始的分支(那里的修复提交可能更长时间)。
请参阅源代码中 README.cvs2hg 的更长时间讨论。
cvs2hg 安装
从 PyPI 安装
pip install cvs2hg
或从源代码安装
hg clone https://foss.heptapod.net/mercurial/mercurial-cvs2hg cd mercurial-cvs2hg sudo python setup.py install
(或在虚拟环境中安装,或使用 pip 本地安装)。
cvs2hg 使用
运行转换的常规方式
以某种方式获取正在转换的模块的 ,v 文件(您需要读取服务器 CVS 仓库的访问权限)。要运行转换,您需要以下目录树(假设您正在转换 libs/acme,该目录包含一些文件,还有一个 doc 子目录)
someWorkDir | +--- CVSROOT (can be empty directory, just marks where root is) | | +--- libs | | +--- acme | +-- something.h,v | +-- something.c,v | +-- doc | +-- README.txt,v | +-- Attic | +-- BUGS.txt,v
运行以下命令
cd someWorkDir cvs2hg --hgrepos=$HOME/repos/libs/acme \ --encoding utf8 --encoding iso-8859-2 \ libs/acme
(根据您的需要调整编码,以下是可用于提交消息的编码列表)
检查结果 Mercurial 仓库(使用上述命令将是在 $HOME/repos/libs/acme)。有时某些历史编辑可能是有意义的(例如删除不必要的分支或标签,甚至执行 Mercurial 到 Mercurial 转换来修改用户名)。
源代码及其历史
cvs2hg 由 Greg Ward 创建,作为 cvs2svn 的分支(该分支,与它的名字相反,还处理了到 git 和 Bazaar 的转换),扩展以支持 Mercurial。后来,它被 Marcin Kasperski 补丁以支持更新的 Mercurial 版本。
由于这项工作从未合并到上游,且 cvs2svn 脚本(和库)的存在导致了一些混淆,因此最终从大多数非 Mercurial 相关代码中清理了仓库,现在它作为一个纯 CVS → HG 转换工具存在。
当前仓库
历史仓库
https://bitbucket.org/Mekk/mercurial-cvs2hg(Marcin Kasperski 的补丁直到 2020)
http://hg.gerg.ca/cvs2svn(Greg Ward 的仓库)
http://cvs2svn.tigris.org/cvs2svn.html(原始 cvs2svn)。
项目详情
cvs2hg-3.0.2.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 12137ba586a3e231ee2e881232de60a8b09b4e610b631e2b6b6417e4cfc4fe00 |
|
MD5 | 9be4a4607db8d422eaad70c6ab31855a |
|
BLAKE2b-256 | 355c028883f2620fdd7ca49e9af5dc4f1f7c2458dda40e76a4f923a9fa38de27 |