2014-03-03 109 views
1

我們正在擺脫我們的DEC Alpha工作站,並在OpenVMS代碼管理系統(CMS)下安裝了許多我們想要導入到在Linux上運行的GIT的歷史軟件。目前我們必須手工完成,而且需要很長時間才能完成。有誰知道會自動執行此過程的腳本?如何導出OpenVMS CMS歷史記錄並將其導入GIT

+0

CMS有一個[API](http://h71000.www7.hp.com/doc/82final/decset/cms_call_routines_reference.pdf)。如果沒有更好的東西出現,你可以編寫一個應用程序來提取GIT可以處理的所有內容。 – HABO

回答

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分支。目前這只是一個概念驗證。但如果有興趣...

3

剛剛處理CMS-Git遷移,需要找到現成的解決方案,其中 帶我到這裏。令人驚訝的是,這項任務的選擇並不多。不停地挖,也發現多了一個遷移實用程序exportcms-githttps://github.com/nomadbyte/cms-export

試過了效用,認爲此處舉報加起來更多的情況下,別人主體面臨這樣的任務。

這是一個DCL批處理,沒有太多關注,但文檔很有用。 讀取CMS,創建您傳輸的Git導入文件並創建目標Git回購。 將它轉換成一箇舊的CMS庫(我們有五個!)它有一點點小心, 需要ftp導出的文件爲二進制,顯然我們在lib中有一些二進制元素。

它幾代人出口,基本上每個人都成爲一個Git承諾。它還爲變體和類創建分支。我不知道我們在CMS中甚至有變體。無論如何,Git repo是可用的,我們計劃重新安排它以建立一個新的過程,但我們保留了所有的修訂。

相關問題