
Macにgitサーバーを構築して、ついでにgit://でアクセスできるようにする方法です。Linuxのように専用のパッケージが無いっぽいので.plistを作成してgitプロトコルを使えるようにしてます。
環境構築関係は記事にしておかないと忘れるので備忘録です。
ローカルリポジトリの作成
例として、デスクトップにgit-testというフォルダを作成してgitで管理するようにします。
フォルダを作成したらgit-testに移動します。
移動したら、以下を実行してgitで管理するようにします。
上のコマンドを実行すると.gitという不可視フォルダが作成され、gitで管理できるようになります。
次に適当なファイルを作成します。ファイル名は何でもかまいません。
ファイルを作成したらgitに追加。
最後にコミット。
実際の操作は以下のようになります。
gitサーバーの構築
例としてホームディレクトリにgitというフォルダを作成し、そこをサーバーとして公開するようにします。
フォルダを作成したらgitフォルダに移動します。
移動したら、先ほど作成した「git-test」のデータを格納する場所を作ります。フォルダ名は何でも構わないのですが、管理しやすいように同じ名前にしておいた方が良いと思います。名前の後に.gitをつけるのが習わしのようです。
作成した「git-test.git」に移動し…
gitサーバーとして公開できるようにします。--bareをつけて$ git initを実行します。
上のコマンドを実行すると、通常は.gitフォルダ内に作成されるデータ格納用のファイル等が可視状態で作成されます。これは公開リポジトリと呼ばれるもので、サーバーとして機能するためのリポジトリです。
実際の操作は以下のようになります。
SSHの設定
※:後述するgit://で接続する場合は、この設定は不要です。
gitサーバーとの接続にはSSHを使っているので、設定しておかないと接続に失敗する場合があります。毎回パスワードを入力するのは面倒なので、パスワードなしの公開鍵を作成して登録してます。
最初に~/.sshフォルダに移動します。無い場合は作成してください。
次に公開鍵を作成します。
上のコマンドを実行したら return を3回ほど連打しときます。パスワードを設定しないので空のままで構いません。
鍵を作成したらauthorized_keysファイルに登録します。
鍵を登録したら「システム環境設定」 → 「共有」内の「リモートログイン」をONにします。
このとき、上の囲ってある部分のアドレスを控えておきます。後でgitサーバーに接続する際に必要になります。
Macでもgit://で接続できるようにする
gitサーバーへの接続にgitプロトコル(git://)を使うようにすれば、sshの設定は不要になります。sshでの接続に抵抗がある方は設定しておいた方がいいと思います。
gitをデーモンとして起動すればいいだけなので、専用の.plistを作成してMacにログインした際に自動で起動させるようにします。
.plistを設置する~/Library/LaunchAgentsに移動します。
gitをデーモンとして常駐させる.plistを作成します。
15行目のパスは環境にあわせて変更してください。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>KeepAlive</key> <false/> <key>Label</key> <string>com.git-daemon-run</string> <key>ProgramArguments</key> <array> <string>git</string> <string>daemon</string> <string>--export-all</string> <string>--enable=receive-pack</string> <string>--base-path=/Users/kikaigyo/git</string> </array> <key>RunAtLoad</key> <true/> <key>ServiceDescription</key> <string>com.git-daemon-run</string> </dict> </plist>
com.git-daemon-run.plist · GitHub
ファイルを作成したら以下を実行し、ログイン時に自動で起動させます。
リポジトリのデータをgitサーバーにアップする
最初に作成したローカルリポジトリに移動します。
移動したら、作成したサーバーのアドレスを登録します。
SSHで接続する場合
控えておいたアドレス:データの格納先と入力します。
git://で接続する場合
git://ホスト名(IPアドレスでも可)/データの格納先と入力します。
※:前述の.plistで~/gitを指定しているので、sshと違いgitサーバー側のリポジトリ名だけでOKです。
アドレスを登録したらサーバーにデータをプッシュ(アップ)します。
成功すれば下のように* [new brach]と表示されます。
SSH
git://
動作テスト
例として~/Documentsフォルダに「git-test」リポジトリのクローンを作成します。
Documentsフォルダに移動し…
クローンを作成します。
SSH
git://
無事クローンを作成できたら、適当なファイルを追加してアップできるかどうかテストします。例として、test.txtというファイルを追加します。
ファイルを作成したらgitに追加。
次にコミット。
gitサーバーに変更をプッシュ。
成功すれば下のようになります。
ネット回線越しに別PCから接続
下は、LAN内にある別PCのUbuntuに「git-test」リポジトリのクローンを作成したところです。gitサーバーとして問題無く機能してくれているようです。
Ubuntuに作成したクローン内でファイルを変更し、Mac上のgitサーバーに変更をプッシュしても問題無く反映されています。
スポンサード リンク