■概略
オープンソースエンジニア歴30年超の筆者が2023年からIBMiを学びだした学習記録です
筆者が行っているFFRPGのgitコード管理の流れをまとめました
◯ブランチの役割
目的 | ライブラリ | ブランチ名 |
---|---|---|
本番 | 本番機のCGILIB | master ※feature/fixからmasterに 開発者がマージリクエストし、管理者がマージする |
開発 | 開発機のCGILIB | develop ※feature/fixからdevelopに 開発者がマージリクエストし、開発者がマージする |
バグ修正 | 個人ライブラリ | fix/#イシュー番号 ※developからブランチを作成する |
機能追加 | 個人ライブラリ | feature/#イシュー番号 ※developからブランチを作成する |
◯修正・反映の流れ
修正・反映にはgitの機能だけではなく、
gitlabのイシュー・マージリクエスト・マージ機能を使う
連番 | 担当者 | ブランチ | ツール | 作業 |
---|---|---|---|---|
0 | 開発者 | 全て | VSCode | ホームディレクトリに ローカルレポジトリ取得 |
1 | 管理者 開発者 |
- | gitlab | イシュー作成 |
2 | 開発者 | developから 作業ブランチ |
tig | developから作業ブランチを 作成し切替える |
3 | 開発者 | 作業ブランチ | VSCode | ソース修正を行う 個人ライブラリで コンパイルとテスト |
4 | 開発者 | 作業ブランチ | tig | commit & push |
5 | 開発者 | 作業ブランチ | gitlab | developへのマージリクエスト |
6 | 開発者 | develop | gitlab | developへのマージ |
7 | 開発者 | develop | VSCode | 開発機のCGILIBで コンパイルとテスト |
8 | テスト担当 | develop | アプリ | developの動作確認を行う |
9 | テスト担当 | develop | gitlab | masterへのマージリクエスト |
10 | 管理者 | master | gitlab | masterへのマージ |
11 | 管理者 | master | VSCode | 本番機のCGILIBで コンパイルとテスト |
12 | テスト担当 | master | アプリ | 本番で動作確認を行う |
■修正・反映の詳細手順(開発者分の1-7)
0) ホームディレクトリにローカルレポジトリ取得
…gitに慣れていない人向けの説明なので環境を整えるところから書くべきでした
最初にgitlabからgit cloneで自分のホームディレクトリにローカルレポジトリを
展開し開発準備を整える
gitlabのプロジェクトのトップ画面の[クローン]の[sshでクローン]でURLをコピーする
VSCodeのterminalかsshクライアントでコピーしたURLをgit cloneする
git cloneしたディレクトリにcdで移動し、tigを起動しrでブランチ一覧を表示すると
「2)tigでイシューに対応するブランチを作成する」 の画面になる
$ git clone git@gitlab.local:test/readme.git
Cloning into 'readme'...
remote: Enumerating objects: 1221, done.
remote: Counting objects: 100% (179/179), done.
remote: Compressing objects: 100% (179/179), done.
remote: Total 1221 (delta 106), reused 0 (delta 0), pack-reused 1042
Receiving objects: 100% (1221/1221), 6.92 MiB | 7.15 MiB/s, done.
Resolving deltas: 100% (699/699), done.
$ cd readme
$ tig
1) イシューを作成する
担当 | 管理者 or 開発者(開発者が気づいた際もイシューを作成する) |
ブランチ | なし |
ツール | gitlab |
*作業内容
1.gitlabの {プロジェクト名}-[イシュー]-[新しいイシュー] でイシューを作成する
タイトル | 変更内容がわかるように簡潔に記載 |
タイプ | イシュー か インシデント |
説明 | 変更内容を詳細に記載 |
担当者 | gitlabのアカウントに割り当てる |
期日 | 期限を入力 |
マイルストーン | 別途管理するマイルストーンを入力する(今は空) |
ラベル | ax_分類,bx_ステータス,cx_優先度など用意されたラベルを割り当てる |
[作成イシュー]を押す
2)tigでイシューに対応するブランチを作成する
対象 | 開発者 |
ブランチ | develop→作業ブランチ |
ツール | tig |
*作業内容(画面はdevelopブランチでBを押し作業ブランチ名を指定するところ)
- tigでdevelop(親ブランチ)を選択し U(git pull) で最新に更新する
- develop(親ブランチ)を選択し B(git branch) で作業ブランチを作成する
ブランチ名は、{バグ修正ならfix,追加修正ならfeature}{#イシュー番号}
(説明を加えるなら簡潔な英語でスペースを入れない) - 作業ブランチを選択し = で作業ブランチに切替える
3)VSCodeでイシューに対応する変更をブランチで行う
対象 | 開発者 |
ブランチ | 作業ブランチ |
ツール | VSCode |
*作業内容
- 作業ブランチでソースを修正する
- cmd/crtpgm_{PGM名}.bashを実行し、個人ライブラリにコンパイルし単体テストする
4)tigで変更内容をブランチにgit add,commit,pushする
対象 | 開発者 |
ブランチ | developブランチ |
ツール | tig |
- tigで r を押してブランチ一覧画面にする
- 作業ブランチが一番上になっていることを確認する
なっていなければ作業ブランチを選んで = で作業ブランチに切り替える
(git checkout) - tigで s を押してgit status画面にする
- 対象ファイルを選択し a を押してgit addする
もう一度 a を押すと戻す - C(大文字C) を押してgit commitする
- P(大文字P) を押してgit pushする
commitの際、コミットメッセージを以下のルールに従って記載する
~/.commit_templateで定義している
# ==== Commit Messages(Template) ====
# [prefix] #Issue番号 変更内容
# 例) [fix] #438 コメント追加
# ==== Prefix ====
# [fix] バグ修正
# [hotfix] クリティカルなバグ修正
# [add] 新規機能・新規ファイル追加
# [update] バグではない機能修正
# [revert] 修正取り消し
# [refactor] リファクタリング
# [docs] ドキュメントのみ修正
5)gitlabでマージリクエストを行う
対象 | 開発者 |
ブランチ | developブランチ |
ツール | gitlab |
*作業内容
タイトル | {feature/fix}/{#イシュー番号} {説明} |
Draftとしてマーク | [ ](チェックしない) |
説明 | 変更内容を記載 |
担当者 | gitlabのアカウントに割り当てる |
レビュアー | gitlabのアカウントに割り当てる(オプション) |
マイルストーン | 別途管理するマイルストーンを入力する(今は空) |
ラベル | ax_分類,bx_ステータス,cx_優先度など用意されたラベルを割り当てる |
[作成マージリクエスト]を押す
6)gitlabで差分を確認しマージを行う
対象 | 開発者 |
ブランチ | developブランチ |
ツール | gitlab |
*作業内容
- gitlabの {プロジェクト名}-[マージリクエスト]-[オープン] からマージするリクエストを選択する
- 画面右上の[コード]-[WebIDEでチェック]するとオンラインVSCodeで左右ペインに差分が表示される
- 差分に問題なければ、[マージ]を押すとマージしてくれる
7)開発機のCGILIBでコンパイルとテスト
対象 | 開発者 |
ブランチ | developブランチ |
ツール | VSCode |
*作業内容
- cmd/crtpgm_{PGM名}2DevCGILIB.bashを実行し、開発機のCGILIBにコンパイルしテストする