【问题标题】:How do I export OpenVMS CMS history and import it to GIT如何导出 OpenVMS CMS 历史并将其导入 GIT
【发布时间】:2014-03-03 20:04:22
【问题描述】:

我们正在摆脱我们的 DEC Alpha 工作站,并在 OpenVMS 代码管理系统 (CMS) 下拥有许多历史软件,我们希望将它们导入到在 Linux 上运行的 GIT。目前我们必须手工完成,这需要很长时间。有人知道可以自动执行此过程的脚本吗?

【问题讨论】:

  • CMS 有一个API。如果没有更好的结果,您可以编写一个应用程序来提取 GIT 可以处理的所有内容。

标签: git import export openvms


【解决方案1】:

只需要处理 CMS-Git 迁移,需要找到现成的解决方案,这 把我带到了这里。令人惊讶的是,这项任务的选择并不多。继续挖掘,还发现了另一个迁移实用程序exportcms-githttps://github.com/nomadbyte/cms-export

试过那个实用程序,想在这里报告它,以便在其他人面临这样的任务时增加更多的主题。

这是一个 DCL 批处理,没有深入研究,但文档很有用。 读取 CMS,创建您传输的 Git 导入文件并创建目标 Git 存储库。 运行它来转换旧的 CMS 库(我们有五个!) 需要将导出的文件 ftp 为 binary,显然我们在 lib 中有一些二进制元素。

它逐代导出,基本上每一个都成为一个 Git 提交。它还为变体和类创建分支。我不知道我们的 CMS 中甚至还有变体。无论如何,Git 存储库是可用的,我们计划重新安排它以用于新的构建过程,但我们保留了所有修订。

【讨论】:

    【解决方案2】:

    我有类似的东西:

    $ ./git-cmsimport.pl
    usage: ./git-cmsimport.pl [OPTION]... LIBRARY URL
           Import the latest generation of all elements from the CMS LIBRARY
                            (in VMS syntax) located by the URL.
                            Results in files in the master.
           -c CLASS,        import only the members of the CMS class CLASS.
                            Results in files in the branch CLASS.
           -f FILE,         local file containing the CMS history (for -h)
                            or CMS generation information.
           -h,              import the full CMS LIBRARY according to its history.
                            Results in files in the master and branches for classes.
           -l,              lowercase all VMS names: library, user and files
           -t OFFSET,       time zone, 4 digit offset from UTC (rfc2822)
    example: ./git-cmsimport.pl -f hist.txt -h -l -t -0600 [.cmsdemo] http://eisner.encompasserve.org
    $
    

    也就是说,我在本地 Linux 系统上运行一个 perl 脚本,在远程 VMS 系统上,我从我的帐户运行一个自己的 http 服务器

    $ ./git-cmsimport.pl -t -0600 [.cmsdemo] http://eisner.encompasserve.org:8081
    LIBRARY EISNER$DRA3:[DECUSERVE_USER.BECKER_H.CMSDEMO]
    %CMS-S-FETCHED, generation 5 of element EISNER$DRA3:[DECUSERVE_USER.BECKER_H.CMSDEMO]BAR.C fetched
    %CMS-S-FETCHED, generation 2 of element EISNER$DRA3:[DECUSERVE_USER.BECKER_H.CMSDEMO]FOO.C fetched
    %CMS-S-FETCHED, generation 2 of element EISNER$DRA3:[DECUSERVE_USER.BECKER_H.CMSDEMO]MAIN.C fetched
    $ ls -a CMSDEMO/
    .  ..  BAR.C  .cms-elements  FOO.C  .git  MAIN.C
    $
    

    如您所见,它尝试将 CMS 类映射到 git 分支。目前,这只是一个概念证明。但是如果有兴趣...

    【讨论】:

      猜你喜欢
      • 2012-12-22
      • 2010-09-11
      • 2011-08-25
      • 2010-10-12
      • 2019-04-28
      • 1970-01-01
      • 2017-04-14
      • 1970-01-01
      • 2022-06-20
      相关资源
      最近更新 更多