基于CVS2N的存储库(CVS2N)
cvs2hg的Python项目详细描述
将CVS存储库转换为Mercurial。与^{tt1}相反$ 正确处理标签和分支。在
cvs2hg用途
将cvs2hg转换为cvs2hg 比hg转换做得更好保存适当 标记和分支点内容。在
最重要的情况是手动调整标签。 示例场景:
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在某个随机位置(通常在初始修订附近)。在
cvs2hg通过创建fixup commit-artific来解决这个问题 使存储库内容与标记同步的更改 已转换(删除cvs标记省略的文件,应用 仅对所选文件进行部分更改。最终结果是:
^{pr2}$提供完全相同的文件,具有完全相同的内容,如下所示:
cvs up -r blah_1-0-1
代价是,在大多数情况下,历史包含这些提交 细小的三角形树枝像:
| o |\ | | | | | o [blah_1-0-1] <--- fixup commit |/ | | o |
同样的问题和解决方案也适用于启动的分支 从这样一个标记(在那里fixup commit可能会初始化较长的分支)。在
另请参见中的较长讨论自述文件.cvs2hg在源代码中。在
cvs2hg安装
从pypi安装:
pip install cvs2hg
或从源安装:
hg clone https://foss.heptapod.net/mercurial/mercurial-cvs2hg cd mercurial-cvs2hg sudo python setup.py install
(或在virtualenv中安装,或使用pip在本地安装)。在
cvs2hg使用
运行转换的常用方法:
抓取正在转换的模块的,v文件(您需要阅读 访问服务器CVS存储库)。要运行转换, 您需要以下目录树(假设您转换libs/acme,其中 有一些文件和doc subdir):
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。后来被马辛·卡巴斯基修补过 以支持更新的Mercurial版本。在
因为这项工作从来没有合并回上游 cvs2svnscript(和库)碰巧造成了混乱 存储库最终从大多数与Mercurial无关的代码中清除 现在它只作为CVS→HG转换工具存在。在
当前存储库:
历史存储库:
- https://bitbucket.org/Mekk/mercurial-cvs2hg(马尔辛·卡巴斯基补丁到2020年)
- http://hg.gerg.ca/cvs2svn(格雷格·沃德的知识库)
- http://cvs2svn.tigris.org/cvs2svn.html(原始cvs2svn)。在
- 项目
标签: