基于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将丢失。在综合历史中 没有file2file3file4所在的时间点 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使用

运行转换的常用方法:

  1. 抓取正在转换的模块的,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
    
  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。后来被马辛·卡巴斯基修补过 以支持更新的Mercurial版本。在

因为这项工作从来没有合并回上游 cvs2svnscript(和库)碰巧造成了混乱 存储库最终从大多数与Mercurial无关的代码中清除 现在它只作为CVS→HG转换工具存在。在

当前存储库:

历史存储库:

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JavaSpringMVC控制器测试打印结果JSON字符串   若catch语句返回,那个么为什么它最终会阻塞呢?   java Grails中servletContext在哪里可用?   java Jhipster:如何为现有项目启用多种语言   java异常评估SpringEL表达式:“#fields.hasErrors('something')”   java如何验证SeleniumWebDriver中的文本颜色?   java在绘图时使用JPanel坐标   java如何初始化spring启动到project?   java如何通过JDBC的PreparedStatement将UUID数组插入HyperSQL数据库   java修改JVM以跨线程序列化文件访问   Javascript到Java正则表达式   使用Java运行时调用aspell程序时出现字符集问题。getRuntime()。执行官   执行RDP时的java Sukuli按钮识别   java如何使用okhttp更改connect请求的标头   java无法创建Maven Eclipse项目