跳转到主要内容

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在这种情况下会丢失。在聚合的历史中,没有确切的时间点表明file2file3file41.1,而file11.3。因此,hg convertblah_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 使用

运行转换的常规方式

  1. 以某种方式获取正在转换的模块的 ,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
  2. 运行以下命令

    cd someWorkDir
    
    cvs2hg --hgrepos=$HOME/repos/libs/acme \
          --encoding utf8 --encoding iso-8859-2 \
          libs/acme

    (根据您的需要调整编码,以下是可用于提交消息的编码列表)

  3. 检查结果 Mercurial 仓库(使用上述命令将是在 $HOME/repos/libs/acme)。有时某些历史编辑可能是有意义的(例如删除不必要的分支或标签,甚至执行 Mercurial 到 Mercurial 转换来修改用户名)。

源代码及其历史

cvs2hg 由 Greg Ward 创建,作为 cvs2svn 的分支(该分支,与它的名字相反,还处理了到 git 和 Bazaar 的转换),扩展以支持 Mercurial。后来,它被 Marcin Kasperski 补丁以支持更新的 Mercurial 版本。

由于这项工作从未合并到上游,且 cvs2svn 脚本(和库)的存在导致了一些混淆,因此最终从大多数非 Mercurial 相关代码中清理了仓库,现在它作为一个纯 CVS → HG 转换工具存在。

当前仓库

历史仓库

项目详情


下载文件

下载您平台的文件。如果您不确定要选择哪个,请了解有关 安装软件包 的更多信息。

源代码分发

cvs2hg-3.0.2.tar.gz(545.6 kB 查看哈希

上传时间 源代码

支持者:

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