2021年12月20日月曜日

gitのgitプロトコル

前回gitをlocalプロトコルで使用する方法について書きましたが、
やはりネットワーク越しに使いたいことだってあります。
ということで今回はgitプロトコルを使ってみます。
なおすでに前回の作業を行いlocalプロトコルでは 使用可能であることを前提とします。
またOSはUbuntu 18.04です。

まずはサーバ側で以下を実行します。
server$ cd /opt/git/test.git
server$ touch git-daemon-export-ok
server$ git daemon --base-path=/opt/git /opt/git
続いてクライアント側で以下を実行します。
client$ cd ~
client$ mkdir git
client$ cd git
client$ git clone git://<サーバの名前やIPアドレス>/test.git
これで"test"ディレクトリができており、
これが空のリポジトリになっているので、
ここにファイルを登録するなどすることになります。
ネット越しなのに認証なしでアクセスできますが、
標準では"git push"できないのでセキュリティは担保できます。
読み込み専用ということですね。
ただしpushは以下で有効にはできます。
server$ cd /opt/git/test.git
server$ git config daemon.receivepack true
用途に合わせて設定すればいいでしょう。

なお、このままだとサーバ側の"git daemon"を止めると
gitプロトコルでのアクセスができなくなります。
これはサービス化する方法が用意されています。

まず以下で起動スクリプトをインストールします。
# apt install git-daemon-sysvinit
スクリプト"/etc/init.d/git-daemon"ができているので
少なくとも以下のような設定になるよう修正します。
GIT_DAEMON_ENABLE=true
GIT_DAEMON_BASE_PATH=/opt/git
GIT_DAEMON_DIRECTORY=/opt/git
最後に以下を実行して完了です。
# update-rc.d git-daemon defaults

0 件のコメント:

コメントを投稿