just for my convenience

主にコピペ





構築まで


http://techno-st.net/2009/10/29/git.html

まず、サーバーに 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 できる。(認証必要なし

push origin master

http://www.func09.com/wordpress/archives/402

fatal: The remote end hung up unexpectedly

というエラーに対する方法
git-daemonの起動時にreceive-packを有効にしておけば良さそう。
git-daemon --verbose --export-all --base-path=/var/git --enable=receive-pack &

とのこと

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu

メニューサンプル1

メニューサンプル2

開くメニュー

閉じるメニュー

  • アイテム
  • アイテム
  • アイテム
【メニュー編集】

どなたでも編集できます