如何导出OpenVMS CMS历史记录并将其导入GIT

时间:2014-03-03 20:04:22

标签: git import export openvms

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

2 个答案:

答案 0 :(得分:3)

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

试过这个实用程序,想在这里报告,以便在其他人面临这样的任务的情况下为这个主题添加更多内容。

它是一个DCL批处理,没有多看,但文档很有用。 读取CMS,创建您传输的Git导入文件并创建目标Git仓库。 把它转换成一个旧的CMS lib(我们有五个!)它工作了一点点hick-up, 需要将导出的文件ftp为二进制,显然我们在lib中有一些二进制元素。

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

答案 1 :(得分:1)

我有类似的东西:

$ ./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系统上,我在远程VMS系统上运行perl脚本,从我的帐户运行自己的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分支。目前,这只是一个概念证明。但如果有兴趣......