インストール
ふむふむ。git はコマンドラインでいろいろやるっぽいですね。もちろん IDE からもできるはずですがコマンドの理解から入るほうが理解しやすいですし。最終的にはせっかく買ったこの子から使いますよ。で、コマンドライン環境は・・・そんな時のために Linux サーバーがあるんですよ! ええ!早速インストールです。# yum install git (snip) Setting up Install Process Package git-1.7.1-2.el6_0.1.x86_64 already installed and latest version Nothing to do既に入ってましたw
使ってみる
まあ何はともあれ使ってみよう。まずはこのへんを読んでみる。ポイントは分散開発環境では当然問題になる部分ですが”cheap branching and easy merging”という部分にありそうですね。まずは全体の環境設定から。
$ git config --global user.name "Sdk0815" $ git config --global user.email "***@***.***"何かリポジトリを作ってみます。
$ mkdir -p git/sample $ cd git/sample $ git init Initialized empty Git repository in ~/git/sample/.git/適当にファイルを置いて
$ git add . $ git log fatal: bad default revision 'HEAD' $ git commit -m "initial commit" [master (root-commit) 253133b] initial commit 2 files changed, 4 insertions(+), 0 deletions(-) create mode 100644 README create mode 100644 tmp/README $ git log commit 253133b619739070a06835181c4ed6c40aa7e08c Author: Sdk0815 <***@***.***> Date: Fri Jan 4 13:55:45 2013 +0900 initial commitふむ。何かコミットできたようです。
・・・というか、ここから先はサーバーとやりとりするようになってる。せっかくだから自宅サーバーも git のサーバーとして使えるようにしてみるか?
サーバー構築
今度は# yum install git-daemon (snip) Running Transaction Installing : 2:xinetd-2.3.14-35.el6_3.x86_64 1/2 Installing : git-daemon-1.7.1-2.el6_0.1.x86_64 2/2 Verifying : git-daemon-1.7.1-2.el6_0.1.x86_64 1/2 Verifying : 2:xinetd-2.3.14-35.el6_3.x86_64 2/2 Installed: git-daemon.x86_64 0:1.7.1-2.el6_0.1 Dependency Installed: xinetd.x86_64 2:2.3.14-35.el6_3 Complete!入ってませんでしたのでめでたくインストールw /etc/xinetd.d/git を開き、disable = yes を no に変更し、xinitd を restart。
ん、これだけ?よくわからんのでとりあえずリポジトリを作って進んでみよう。ユーザーも特に作られてないし・・・。
# cd /var/lib/git/ # mkdir sample # cd sample # git init --bare --sharedさっきのプロンプトに戻って
$ git remote add origin git://localhost/sample $ git push origin master fatal: The remote end hung up unexpectedlyですよね・・・。そううまくいくわけはなく。/var/log/messages を見ると
git-daemon[25672]: 'receive-pack': service not enabled for '/var/lib/git/sample'なるほど。さっきの /etc/xinetd.d/git の server_args に --enable=receive-pack を追加して xinetd を再起動してみる。
$ git push origin master Counting objects: 5, done. Delta compression using up to 8 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (5/5), 333 bytes, done. Total 5 (delta 0), reused 0 (delta 0) error: unpack failed: unpack-objects abnormal exit To git://localhost/sample ! [remote rejected] master -> master (n/a (unpacker error)) error: failed to push some refs to 'git://localhost/sample'めげるな!またログを見ろ!
git-daemon[25747]: error: insufficient permission for adding an object to repository database ./objectsふむ。さっきの /var/lib/git/sample には objects ってディレクトリがあってそこは root の持ち物になってる。xinetd は root だが・・・ってそうか!また /etc/xinitd.d/git に戻り、ユーザーをチェックすると、nobody になってる。なるほど、では git ユーザーを作って再挑戦。ついでに repository のディレクトリも ~git/repo に変更。xinitd を再起動していざ。
$ git push origin master Counting objects: 5, done. Delta compression using up to 8 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (5/5), 333 bytes, done. Total 5 (delta 0), reused 0 (delta 0) To git://localhost/sample * [new branch] master -> masterおおお?うまくいったかな?確認。
$ cd .. $ ls sample $ rm -rf sample $ ls $ git clone git://localhost/sample Initialized empty Git repository in ~/git/sample/.git/ remote: Counting objects: 5, done. remote: Compressing objects: 100% (2/2), done. remote: Total 5 (delta 0), reused 0 (delta 0) Receiving objects: 100% (5/5), done. $ ls sample $ cat sample/README This is test file.おおお、できましたね!
0 件のコメント:
コメントを投稿