Windows上にGitサーバを立てる | Smart HTTP編

社内など、ローカルエリアネットワーク上にあるWindowsマシンにGitのリモートサーバを構築する手順です。今回はHTTP(HTTPS)通信を使う方法です。

前提条件

  • Gitサーバ – Windows10
  • クライアント – Windows10
  • Gitサーバ、クライアント共にGitはインストール済み
  • WebサーバはNode.jsを使うため、Node.jsをインストール済み

バージョン

  • Node.js – v14.17.4
  • Git – 2.32.0.windows.2

Gitサーバのプロトコルには次の4つを使用できます。

  • Local プロトコル
  • SSH プロトコル
  • Git プロトコル
  • HTTP プロトコル

本記事はHTTP プロトコルの構築手順になります。

参考

Git サーバ

リポジトリの作成

Git サーバのマシンにリモートリポジトリとなるリポジトリ(ベアリポジトリ)を作成します。

  1. 末尾に.gitと付けた任意のフォルダを作成する
    例) c:\gitrepo\test.git
  2. Git Bashを起動し、作成したフォルダ内で次のコマンドを実行する
    git init --bare --shared
    
  3. クライアントからのプッシュを許可するために次のコマンドを実行する
    git config http.receivepack true
    
    これを設定しないと、クライアントからプッシュする際に後述のエラーが発生する

Node.jsでWebサーバを作成する

  1. 任意のフォルダを作成する
  2. コマンドプロンプトを起動し、作成したフォルダ内で次のコマンドを実行する
    npm init
    
  3. CGIモジュールをインストールする
    npm install cgi
    

フォルダ内に次にようなプログラムを用意します。(ポート番号は任意)

index.js
"use strict";

const cgi = require('cgi');
const http = require('http');

// 環境変数の設定.
process.env.GIT_PROJECT_ROOT = "C:/gitrepo";
process.env.GIT_HTTP_EXPORT_ALL = "";

const server = http.createServer(cgi("C:/Program Files/Git/mingw64/libexec/git-core/git-http-backend.exe",
    { stderr: process.stderr }));
server.listen(8022);

Webサーバの起動

次のコマンドを実行します。

node index.js

git clone

クライアントでGitサーバのリポジトリをクローンする手順です。操作は全てGi Bash上で行います。次のコマンドを実行すると、リポジトリをクローンできます。

git clone http://<サーバ名>:<ポート番号>/<リポジトリ名>

# 例
git clone http://git-server:8022/test.git

git push時のアクセス権エラー

前述のリポジトリの作成でリポジトリにプッシュを許可していない場合、次のようなエラーが発生します。

fatal: unable to access ‘http://git-server:8022/test.git/’: The requested URL returned error: 403

このエントリーをはてなブックマークに追加
にほんブログ村 IT技術ブログへ

関連コンテンツ

スポンサードリンク

コメント

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です