OMV で git を使う

シングルボードコンピュータ Banana Pi M1 Classic でファイルサーバ・アプライアンス OpenMediaVault(以下 OMV) を動かしています。
ファイルサーバの一部データについて git と連携したかったので、設定しました。
※今回は git と OMV との連携については考慮していません。

目次

git 導入

OMV に git を導入しようとしたらインストール済みでした。

$ sudo apt install git
Reading package lists... Done
Building dependency tree       
Reading state information... Done
git is already the newest version (1:2.11.0-3+deb9u4).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

環境確認

git

$ git --version
git version 2.11.0

プラットフォーム

当該 OpenMediaVault の環境は Debian 9 です。

$ cat /etc/debian_version
9.6

$ uname -a
Linux bananapi 4.14.84-sunxi #3 SMP Sat Dec 1 07:18:41 CET 2018 armv7l GNU/Linux

$ cat /etc/issue
openmediavault 4.1.16-2 (Arrakis) \n \l
Copyright (C) 2009-2018 by Volker Theile. All rights reserved.

git 設定

前提

一般的には Webサーバを立てて URL を発行する手順になると思いますが、OMV で既に Webサーバ(Nginx)を利用しています。
また、OMV は Webサーバ込みのアプライアンスです。アップデートなどで設定上書きされる可能性が残るので、今回は SSH 経由で接続することにしました。

調べてみて初めて知ったのですが、git は標準で SSH プロトコルをサポートしています。

base on Git - Git リポジトリの取得

Git では、さまざまな転送プロトコルを使用することができます。先ほどの例では git:// プロトコルを使用しましたが、http(s):// や user@server:/path.git といった形式を使うこともできます。これらは SSH プロトコルを使用します。

  • 接続情報例
    接続先 SSH
    サーバ {userId}@{serverIP}
    パス /srv/dev-disk-by-label-RAID1/gitRepository/REPO
    接続パス {userId}@{serverIP}:/srv/dev-disk-by-label-RAID1/gitRepository/REPO

リポジトリの作成

リモートリポジトリ

まずサーバ側にリモートリポジトリを作成します。

$ sudo mkdir -p /srv/dev-disk-by-label-RAID1/gitRepository/REPO
$ cd /srv/dev-disk-by-label-RAID1/gitRepository/REPO
$ sudo git init --bare --shared
Initialized empty shared Git repository in /srv/dev-disk-by-label-RAID1/gitRepository/REPO/

ローカルリポジトリ

リモートリポジトリに続き pull & commit するためのローカルリポジトリを作成します。
今回はコマンドではなく git 同梱の GUIツール git-gui を使って設定しました。

Git GUI

インストール
$ sudo apt install git-gui
起動

コマンドラインなどで以下を入力します。

  • git gui
    ※文字列 git と gui の間には半角スペースが必要。
リポジトリ設定

Git Gui で以下を設定します。

  • ローカルリポジトリを作成する
  • リモートリポジトリに接続する
ローカルリポジトリを作成する

Git Gui 上から以下の手順で作成します。

  • 「新しいリポジトリを作る」を選択
  • 当該ディレクトリを入力し [作成] を選択
    ex. /home/{user}/gitWork
    ※ディレクトリ自体の存在有無は問われません。
ユーザー情報の設定

ローカル側での作業です。
また、下記ではエディタも変更しています。
※エディタの変更は任意です(標準は nano っぽい)。

$ git config --global user.name "{name falimy}"
$ git config --global user.email "{mailAddress}"
$ git config --global core.editor 'vi -c "set fenc=utf-8"'

$ git config --global --list 
user.name={name falimy}
user.email={mailAddress}
core.editor=vi -c "set fenc=utf-8"
リモートリポジトリに接続する

起動した Git Gui で [リモート] - [追加] に情報を入力し [追加] を押下します。

リモートを新規に追加 リモートの詳細
名前 任意
場所 {userId}@{serverIP}:/srv/dev-disk-by-label-RAID1/gitRepository/REPO

※OpenSSH 画面が開くので 当該アカウントのパスワードを入力すると追加されます。

おまけ

リモートリポジトリにプッシュ

以下手順でリモートリポジトリにプッシュ可能です。

  • 再スキャン
  • 変更をコミット予定に入れる
  • コミットメッセージを入力する。
  • コミット
  • プッシュ

注意事項

いつまでもプッシュが終わらない場合は権限を確認してみましょう。