1分レシピ。
やりたいこと
Windows上でgitリポジトリを公開したい。SSHサーバを立てるのが面倒ならHTTPだね!
必要なもの
- Node.js
- yarn とか npm
- Git for Windows
リポジトリの準備
適当なディレクトリにbare repositoryを用意し、
pushするための設定
git config http.receivepack true
とすることでpush可能になる。push不要で良いなら設定は不要。この設定をしない場合HTTP経由では書き込み禁止と見做され、
エラーメッセージ
Service not enabled: 'receive-pack'
と git-http-backend
がstderrに吐いて失敗してしまう。
スクリプト
cgi
モジュールに依存しているので、 yarn
か何かで入れておくこと。
前準備
yarn init # 質問に適当に応える
yarn add cgi
スクリプト(index.js
)は数行:
index.js
const cgi = require("cgi");
const http = require("http");
process.env.GIT_PROJECT_ROOT = "c:/testrepo";
process.env.GIT_HTTP_EXPORT_ALL = "";
http.createServer(cgi("c:/Program Files/Git/mingw64/libexec/git-core/git-http-backend.exe",
{stderr: process.stderr})).listen(8888, "127.0.0.1");
git-http-backend
の場所は他のディストリビューションでは当然別になる。このスクリプトでは 127.0.0.1
をlistenしているので当然他所のホストからは接続できない。
clone してみる
まずサーバを起動しておく。
サーバの起動
node index.js
先のスクリプトではリポジトリは c:/testrepo/
以下に配置することになる。
前準備
cd testrepo
mkdir hoge.git
cd hoge.git
git init --bare
git config http.receivepack true
<なんかコミットする>
あとは普通にcloneする。認証の類は入れてないので、特にパスワードとか入れることなくそのままcloneできてしまう。
実際のclone
git clone http://localhost:8888/hoge.git
感想
- じつにかんたんだった
- Qiitaに記事を書く方が時間が掛かる
認証の実装が本番だ。。