自宅sshdが走ってればGitLab無くてもGitサーハになってもらえるよ
新しくレポジトリを生やすのはちょっとめんどう。
ローカルコピーのディレクトリで、
$ git clone --bare . /tmp/repo.git
$ rsync -avz /tmp/repo.git リモートユーザ@sshサーバ:/tmp/
sshサーバーで、
$ export PROJ=プロジェクト名
$ sudo mv /tmp/repo.git /home/repository/git/$PROJ.git
$ sudo chmod -R og-rwx /home/repository/git/$PROJ.git
$ sudo chown -R リモートユーザ.リモートグループ /home/repository/git/$PROJ.git
ローカルコピーのディレクトリで、
$ git remote add origin リモートユーザ@sshサーバ:/home/repository/git/プロジェクト名.git
Gitlite3あたりでも使えれば、複数repoも使えて素敵です。
@yabuki なるほど~。今のところファイルシステムのアクセス制御で充分(なにしろ僕しかつかってないw)んですよね
@zundan 目的別のレポが簡単に作れるのが素敵なのです。
作るのが面倒だとモノレポになりがち。
@zundan あーなるほどそれはそうかー、と見てました。(すでに書かれてるとおりすね)
https://git-scm.com/book/en/v2/Git-on-the-Server-Getting-Git-on-a-Server
@zundan と、15年くらい前のレオさんの名訳「サーバ立てるのがクッっっっソめんどくさかったから」を思い出しますw
GitHub共同創業者がRubyKaigiに来た時、質問の「なんで作ったの?」に対する答えがそんなだった記憶があります。git:の場合のセキュリティ系セットアップのことを言ってたのかなぁ、うろ覚えです
@tadd 複数のチームで使おうとすると、さっき書いたスクリプトじゃぜんぜん足りなくて、サーバ側でユーザとグループと鍵を管理して、各レポジトリのパーミションを管理して、ってすぐ大変になりそうですねー
@zundan なるほど、それはそうですね、たしかに。
ましてやお互い他人のマルチテナント状態ならもうクッ…ですねw
@tadd sshサーバにログインできないといけないというのはかなり厳しい制限ですよねー
@zundan なるほどー。sshなんも分かってないですが、基本的に OSのアカウントとは不可分、なんでしたっけ?
ただGitHubもLabも一つにまとめてるので、たくさん作るのはきっと辛いのかな、という素人の推測はあります。
(インターフェイス的に簡単にしたいだけなのかなんなのか)
@tadd 言われてみれば想像だけで確認してないのですが、たぶんローカルのgitコマンドがリモートのベアレポジトリとやりとりをする時にベアレポジトリ内のファイルやディレクトリを読み書きできる必要がありそうえす。sshサーバでそれをやるにはsshサーバにアカウントがあってOSによるファイルへのアクセス制御をやってもらう必要がありそうです。GitHubやGitLabはアクセス制御をOSにまかせずに、それぞれのサービスのアカウントを管理する仕組みでやってるんだろうな、と想像してます。
@zundan あー、なるほど。そうなんだろうなーと自分も思います。
Web(サービス)のレイヤーとOSのレイヤーで対応させるのは大変だろうし(1:1でもm:nでも)、いやそもそも必要なの?(他のだと普通やらなそう)というのは分かるっす。