Gitリポジトリを管理するサービスやソフトウェアは多いですが、そのGit管理の仕組みを自分のサービスでも取り入れたりと思う方は多いはずです。そうした場合、Git操作の仕組みをすべてすべて自分でイチから実装しなければなりません。 しかしnode-git-serverを使えば幾分簡単になりそうです。node-git-serverはカスタマイズできるGitサーバです。

node-git-serverの使い方

node-git-serverの基本的なコードです。以下のコードではpush/fetchに対応しています。

const Server = require('node-git-server');
const repos = new Server(path.resolve(__dirname, 'tmp'), {
    autoCreate: true,
    authenticate: (type, repo, user, next) => {
      if(type == 'push') {
        user((username, password) => {
          console.log(username, password);
          next();
        });
      } else {
        next();
      }
    }
});
const port = process.env.PORT || 7005;

repos.on('push', (push) => {
    console.log('push ' + push.repo + '/' + push.commit
        + ' (' + push.branch + ')'
    );
    push.accept();
});

repos.on('fetch', (fetch) => {
    console.log('fetch ' + fetch.commit);
    fetch.accept();
});

repos.listen(port, () => {
    console.log(`node-git-server running at http://localhost:${port}`)
});

node-git-serverはこのようなコードを自分で書いてGitサーバを作れます。SSHではなくHTTPですが、コンテンツをGit管理するといった簡易的な使い方であれば十分ではないでしょうか。また、node-git-serverをバックグラウンドで動かしておき、自社サービスと連携するというのも良さそうです。

node-git-serverはnode/JavaScript製のオープンソース・ソフトウェア(MIT License)です。

gabrielcsapo/node-git-server: ? A configurable git server written in Node.js