1

私たちは DEC Alpha ワークステーションを取り除き、Linux で実行されている GIT にインポートしたい OpenVMS コード管理システム (CMS) の下に多くの歴史的なソフトウェアを持っています。現在、これを手動で行う必要があり、長い時間がかかります。このプロセスを自動化するスクリプトを知っている人はいますか?

4

2 に答える 2

3

CMS-Git の移行に対処する必要があり、準備ができているソリューションを見つける必要があり、それが私をここに導きました。驚くべきことに、このタスクには多くの選択肢がありません。掘り続けて、もう1つの移行ユーティリティも見つけましたexportcms-git: https://github.com/nomadbyte/cms-export

そのユーティリティを試してみましたが、他の誰かがそのようなタスクに直面した場合に備えて、件名にさらに追加するためにここに報告することを考えました.

これは DCL バッチで、あまり調べていませんが、ドキュメントは役に立ちます。CMS を読み取り、転送した Git インポート ファイルを作成し、宛先 Git リポジトリを作成します。古いCMSライブラリを変換するために実行しました(5つありました!)エクスポートされたファイルをバイナリとして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 に答える