■前提
GitサーバにGitlab CEを使っています
以下の手順で行います
*Gitサーバへログインと設定
*WindowsにGitコマンドのインストール
*Windowsでgit cloneを実行しソースコードを取得
■Gitlab CE
◯ログイン
管理者からもらったアカウント/パスワードでGitlab CEにログインします
もしくは初回パスワードリセットでログインします
https://{Gitサーバ}/users/sign_in - [パスワードをお忘れの場合]
メールアドレスを入力して [x]私はロボットではありません
[パスワードリセット]
一時パスワードが上記メールに送られてくるのでログインしてください
◯公開鍵登録
git認証はgit(ssh)とhttpsが選べます
httpsは毎回ID/PWの入力が必要です。ssh同様秘密鍵/公開鍵でパスワードなし認証を設定します
右上のアイコン - [設定] - [アクセス-SSHキー] - [新しいキーを追加]
キーに以前作成した公開鍵(*.key.pub)の内容をコピペします
改行が入らないようにしましょう
■Git for Windows
参考 : https://qiita.com/takeru-hirai/items/4fbe6593d42f9a844b1c
◯インストール
https://gitforwindows.org/
インストーラをダウンロードしインストールします
gitコマンドでバージョン情報がでればインストール完了です
PS C:\Users\{名前}> git --version
git version 2.53.0.windows.3 …ちょっと古いかも
◯.git/config設定
git config --global user.name "ユーザー名"
git config --global user.email "メールアドレス"
※PCのアカウント名が漢字だとingerprintが保存できないことがある
git config --global core.sshCommand "ssh -o StrictHostKeyChecking=no"
■gitサーバ接続時設定(ssh設定)
接続時にどの秘密鍵を使うか指定します
Host {Gitサーバ名}
HostName {Gitサーバ}
IdentityFile ~/.ssh/{秘密鍵ファイル名}
User git
Port {ポート番号}
■gitサーバからPCにソースをコピー
◯親ディレクトリ
TOBiで抽出したRPG3ソースは以下に置きました
C:\Users\{ユーザ名}\RENRISTU>
リポジトリにはコンパイル用のRules.mk等のファイルが含まれています
上記とは別の親ディレクトリ(この例ならreposまで)を作成しましょう
例) C:\Users\{ユーザ名}\source\repos>
◯git clone
BobのGitツールでもgit cloneできますが、初回はgitコマンドを使うとエラーが表示されわかりやすいです
PS C:\Users\{ユーザ名}\source\repos> までcd
PS C:\Users\{ユーザ名}\source\repos> git clone git@{Gitサーバ}:IBMi/renritsu.git
※httpsで取得したい場合は以下になり、ID/PWを求められます
PS C:\Users\{ユーザ名}\source\repos> git clone https://{Gitサーバ}/ibmi/renritsu.git
取得した中身は以下になります
各ファイルの作り方は「最初にリポジトリを作成する」を参照ください
RENRISTU/
├── .env_template
├── .gitignore
├── QDSPSRC
│ ├── .ibmi.json
│ ├── RENRITSU.DSPF
│ └── Rules.mk
├── QRPGSRC
│ ├── .ibmi.json
│ ├── RENRITSU.RPG
│ └── Rules.mk
├── README.md
├── Rules.mk
└── iproj.json
■[管理者のみ]最初にリポジトリを作成する
1-4_RPG3をPCに抽出しBob表示 に従ってソースファイルを抽出しPCにscpします
◯ソースファイルの先頭に追加
7桁目=仕様書コードの次
*%METADATA *
* %TEXT 二次方程式 *
*%EMETADATA *
◯iproj.json
{
"description": "[RPG3]二次方程式",
"buildCommand": "makei build",
"buildObjectCommand": "makei b -t {object}",
"compileCommand": "makei compile -f {path}"
}
※言語は RPG3やFFRPGなどを入れる
※[注意]TOBiのドキュメントには
makei compile -f {filename} とあるがファイル名右クリックでコンパイルできません
makei compile -f {path} としましょう
◯.env
.envは各個人の設定なので.env_templateをコピーして設定します
コンパイル先はOBJLIBに設定。下記の場合カレントライブラリにコンパイルされます
makeiコマンドのパスはドキュメントではIBMi側で行っているが動作しませんでした
.envで以下のパスを設定しましょう
LIBL=FLIB QGPL QTEMP
PATH="/QOpenSys/pkgs/bin:/QOpenSys/usr/bin:${PATH}"
OBJLIB="*CURLIB"
◯Rules.mk
トップレベルのRules.mkはサブディレクトリを指定します
以下の場合はQDSPSRCとQRPGSRC以下をコンパイルします
SUBDIRS = QDSPSRC QRPGSRC
◯QDSPSRC/Rules.mk
*ソースファイルの単体コンパイル例(QDSPSRCの*DSPF)
RENRITSU.FILE: RENRITSU.DSPF
◯QRPSSRC/Rules.mk
*依存性コンパイル例
QDSPSRC/RENRITSUが変更されたらRENRITSU.RPGが変更されなくてもコンパイルする
RENRITSU.PGM: RENRITSU.RPG RENRITSU.FILE
◯QDSPSRC/.ibmi.json QRPGSRC/.ibmi.json
.ibmi.jsonはTOBiで抽出の時にTgtCCSIDが指定され作成されている(PVSが1399なので)
コンパイル出力先のobjlibを指定する。変数のOBJLIBは.envで指定します
{
"build": {
"objlib": "$(OBJLIB)",
"tgtCcsid":"1399"
}
}
◯gitlab上でリポジトリ作成
https://{Gitサーバ}にログイン
もしグループがなければ先にグループを作成します
ここではIBMiグループにしましたが、言語別などグループ分けしましょう
[グループ]-[IBMi]-[プロジェクトを作成]-[空のプロジェクトの作成]
プロジェクト名 : RENRITSU
表示レベル : ◎非公開(権限は個別に付与する)
[ ]リポジトリを初期化しREADMEファイルを作成する ※チェック外す
[プロジェクトを作成]
リポジトリのURLが作られます
= https://{Gitサーバ}/ibmi/renritsu
◯PCでリポジトリの初期化からpush
PS C:\Users\{ユーザ名}\source\repos\RENRISTU> git init
Initialized empty Git repository in C:/Users/{ユーザ名}/source/repos/RENRISTU/.git/
PS C:\Users\{ユーザ名}\source\repos\RENRISTU> git remote add origin git@{Gitサーバ}:ibmi/renritsu.git
※git remote add行はpush前のリポジトリURLに表示されてます
またはリポジトリURLトップの[コード]でURLをコピーできます
以下3コマンドでローカルのファイルをgitlabリポジトリにpush
PS C:\Users\{ユーザ名}\source\repos\RENRISTU> git add . ※全てのファイルをコミット対象にします
PS C:\Users\{ユーザ名}\source\repos\RENRISTU> git commit -m "最初のコミット" ※コメント付きで
コミットします
PS C:\Users\{ユーザ名}\source\repos\RENRISTU> git push origin master ※コミットをpushします
Enumerating objects: 14, done.
Counting objects: 100% (14/14), done.
Delta compression using up to 12 threads
Compressing objects: 100% (10/10), done.
Writing objects: 100% (14/14), 2.63 KiB | 674.00 KiB/s, done.
Total 14 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
To git.emboma.jp:ibmi/renritsu.git
* [new branch] master -> master
これで
https://{Gitサーバ}/ibmi/renritsu
にコンテンツがアップされています