ちょっと git を試す(再)

ちょっと git を試す(再)
Windows で git を試す。msysGit と TortoiseGit を入れてごにょごにょする。
とりあえずローカルでリポジトリを作ってコミットして別のリポジトリに push したり pull したりはいい感じ。
では、誰かと共有するようなリポジトリはどうするのかな?ということで選択肢がいくつか


git プロトコルオープンソースの物を配布する目的以外は向いてないらしい
httpsWebDAV → 設定多い
SSH → コレダ!!


というわけで SSH.
ポートに 22 を使っていればはまらなかったと思うのだが、もちろん変更している。そしてはまる。
というわけでいくつか
OpenSSH の場合 ~/.ssh/config というファイルでポートの設定や鍵の場所を指定できる。
Putty の鍵を使いたい場合…… TortoiseGit の GUI に設定項目がないような…… というところではまった。
結論から言おうか。

ssh://ユーザー名@ホスト名:ポート番号/path/to/repos.git


こんな感じで良いらしかった。SSH の接続用文字列といえば

ssh:ユーザー名@ホスト名:/path/to/resource


こんな感じだと思い込んでいたのが原因だった(scp のノリだった模様)。


大体以下のような感じ

#### git のリポジトリの保存領域の所有者ユーザーとグループがあるとする
$ sudo /usr/sbin/groupadd -g 9999 git
$ sudo /usr/sbin/useradd -u 9999 -g git git -s /sbin/nologin

#### リポジトリの親ディレクトリを作成
$ sudo mkdir /var/repos
$ sudo chown git:git /var/repos
$ sudo chmod 775 /var/repos
$ sudo chmod g+s /var/repos

#### 自分が git グループにに入っているとする。
$ sudo gpasswd -a takel git

#### サーバー側で共有用のリポジトリを作る
$ sudo mkdir /var/repos/project.git
$ sudo chown git:git /var/repos/project.git
$ cd /var/repos/project.git/
$ sudo git init --bare --shared

#### クライアント側でクローンする
$ cd ~
$ git clone ssh://takel@example.com:22/var/repos/project.git
$ cd project/
ファイルを追加
$ git add .
$ git commit
$ git push origin master


どうでもいいが、TortoiseGit が、やはり TGitCache.exe とかいうプロセスで、リポジトリディレクトリを移動したり削除したりできなくしている。TortoiseSVN の時にも似たようなのがあった。
なんか GUI もややこしいし、実は msysGit だけで頑張るほうがいいのだろうか……