git のリモートリポジトリを構築する

| コメント(0) | トラックバック(0)

最近、でもないかもしれないけど、ソースコード管理に git を使うようになりました。

あまり、ソースコード管理する場面を個人的には感じられず、今まであまり使ったことなかったのですが、使ってみると非常に便利ですね。

ちなみに、僕は svn も cvs も、ほんの少ししか触ったことなくて、そのおかげか? git の導入は非常にスムーズでした。

僕は、家と大学と、いろいろなところでちょこちょこ開発してます。なので、リモートリポジトリがあると非常に便利です。

今までは、github を使っていました。が、github はお金払わないと private なリポジトリは作成できないのです。

あまり、public にしたくないようなものを開発したいときもあるので、今回は家のサーバーにリモートリポジトリを構築してみました。

忘れそうなので、軽く手順を。

 

まず、サーバーに git のリポジトリを作成しましょう。

僕は、git というユーザーを作って ~git/repos に置くことにしました。

/var/repos とかにあるのもありかもしれません。

まあ、置き場所とかユーザーはご自由にどうぞ。

んで、慣例でリモートリポジトリのディレクトリは "hogehoge.git" なディレクトリで作るらしい。

たとえば、hogehoge というプロジェクトのリポジトリを作る場合

$ cd ~git/repos
$ mkdir hogehoge.git
$ cd hogehoge.git
$ git init --bare

みたいな流れで。

--bare は見慣れないかもしれないけど、これは bare リポジトリを作るって意味で、普通 .git の下にある管理情報とかのファイルが、そのディレクトリに展開される。

なんでかって、そもそもリモートリポジトリに、編集するためのファイルはいらないから、管理情報だけでいい。

 

で、あとは、ローカルにあるリポジトリを push します。

まずは、remote を登録しなければいけないので、add します。

$ cd project
$ git remote add origin git@git.example.com:repos/hogehoge.git
$ git push origin master

これで push できます。

接続には、デフォルトでは ssh を使うようになってます。

鍵とか、パスワードとか、認証がかかりますのでご注意を。

 

って、あっけなさすぎる...

実は、git は ssh 使えればこんなに簡単にリモートリポジトリを構築できてしまうんです。

しかし、今回はこれでは終わらない。

 

ssh 使いたくないので、git:// でつなぎたいと思います。

(使えないわけではないけど、使いづらいある事情がうちのサーバーにはある)

なので、git-daemon が必要です。

Debian の場合、aptitude から簡単に git-daemon 自体は導入できます。

# aptitude install git-daemon-run

で ok です。

 

"/etc/sv/git-daemon/run" をいじります。

いじるのは、最後の1行だけで

exec git-daemon --verbose --base-path=/home/git/repos --export-all --enable=receive-pack --user=git

僕はこんな感じにしてますが、正直 "非推薦" です。

  • --base-path
    リポジトリがある場所を指定します。
  • --export-all
    誰でも、どのリポジトリも git clone できるようにします。
  • --enable=receive-pack
    誰でも、git push できるようにします。
  • --user=git
    git ユーザーで daemon を動かします。

と、まあ、ご利用は計画的に。

ちなみに、git プロトコルを使って push するには、こうするしかありませんので、しょうがない。

それと、--user を指定しないと、root で動くようになっていて、push したときに所有者が root になってしまうので、こうしてます。

その他の詳しいオプションなどは、`man git-daemon` をどうぞ。

 

git-daemon の起動、終了は

# sv stop git-daemon
# sv start git-daemon

な感じです。

git プロトコルのポート番号は、9418/tcp を使うようです。

 

で、git:// を使って push するには

$ git remote add origin git://git.example.com/hogehoge.git
$ git push origin master

これで完璧。

 

ここまでやれば

$ git clone git@git.example.com:repos/hogehoge.git #ssh
$ git clone git://git.example.com/hogehoge.git #git

どちらでもできるようになる。

下なら、誰でも clone できる。(認証必要なし

 

まあ、結論として、public にする必要がないプロジェクトなら git:// を使う意味は全くない。

ssh で十分ですねーって。

public にして、不特定多数から push を受けたいなら git プロトコルが必要だけど。

あれ、今回の目的は、public にしたいプロジェクトを置きたかったからじゃ?

気にしない。

トラックバック(0)

トラックバックURL: http://techno-st.net/mt/mt-tb.cgi/821

コメントする

2009年12月

    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

最近のブログ記事

gist を有効的に活用する為のスクリプト
今まで、ソースコード管理システムなんて、…
USB-WSIM を Linux で使う
最近風邪引いてどうにもならない感じ…
Python のメソッド可変長引数とか。
自分の記憶を整理する為のメモ。 Pyth…

for mobile

Ads

 - trial and error



track feed trial and error