我们正在摆脱我们的 DEC Alpha 工作站,并在 OpenVMS 代码管理系统 (CMS) 下拥有许多历史软件,我们希望将它们导入到在 Linux 上运行的 GIT。目前我们必须手工完成,这需要很长时间。有谁知道可以自动执行此过程的脚本?
2 回答
3
只需要处理 CMS-Git 迁移,需要找到现成的解决方案,这导致我来到这里。令人惊讶的是,这项任务的选择并不多。继续挖掘,还发现了另一个迁移实用程序exportcms-git
:
https ://github.com/nomadbyte/cms-export
尝试了该实用程序,并想在这里报告它以增加主题,以防其他人面临此类任务。
这是一个 DCL 批处理,没有太多研究,但文档很有用。读取 CMS,创建您传输的 Git 导入文件并创建目标 Git 存储库。运行它来转换一个旧的 CMS 库(我们有五个!)它工作起来有点麻烦,需要将导出的文件 ftp 为二进制,显然我们在库中有一些二进制元素。
它逐代导出,基本上每一个都成为一个 Git 提交。它还为变体和类创建分支。我不知道我们的 CMS 中甚至还有变体。无论如何,Git 存储库是可用的,我们计划重新安排它以用于新的构建过程,但我们保留了所有修订。
于 2015-12-17T17:35:40.443 回答
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 系统上我运行一个 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 分支。目前,这只是一个概念证明。但是如果有兴趣...
于 2014-03-03T22:58:26.600 回答