Skip to main content

6 posts tagged with "git"

View All Tags

· 3 min read

WerckerでGitHubのソースをgit submoduleで活用する場合には準備が必要。

このように単純にgit submoduleを実行するスクリプトを定義しても失敗する。

- script:
name: git submodules
code: git submodule update -i --recursive

必要な準備は次の2つ。

  • SSHキー使用の準備
  • GitHubをknown_hostsに登録する

git submoduleを実行する際にそのサーバーが信頼できることと、パスワードを求められないようにするための施策である。

SSHキー使用の準備​

SSHキーの登録はWerckerのサイト内だけで完結する。

[-] wercker - Applications https://app.wercker.com/applications

  1. 上記ページからSSHキーを登録したいアプリケーションを選択する
  2. Environmentタブを選択する
  3. 右下のGenerate SSH Keysをクリックする
  4. 適当な名称を指定してSSHキーを生成する

ここではWERCKER_BLOGという名称でSSHキーを生成したとする。
以上の手順を踏むと次の2つの環境変数が生成される。

  • WERCKER_BLOG_PUBLIC
  • WERCKER_BLOG_PRIVATE

WERCKER_BLOG_PUBLICのValue(公開鍵)をコピーする。

次にGitHubのSSH keysに登録する。

[-] SSH and GPG keys
https://github.com/settings/keys

右上のNew SSH Keyをクリックし、先程コピーしておいた公開鍵を貼り付け、登録を完了する。

wercker.ymlには次のように追記する。

- add-ssh-key:
keyname: WERCKER_BLOG
host: github.com

keynameは先程作った環境変数であり、_PUBLICと_PRIVATEを含まない文字列である。

GitHubをknown_hostsに登録する​

GitHubに接続するためにknown_hostsに登録しておく。
単純にwercker.ymlに次の3行を追記するだけである。

- add-to-known_hosts:
hostname: github.com
fingerprint: 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48

git submoduleに関するwercker.yml​

まとめると、wercker.ymlは次のようになる。

steps:
- add-ssh-key:
keyname: WERCKER_BLOG
host: github.com
- add-to-known_hosts:
hostname: github.com
fingerprint: 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48
- script:
name: git submodules
code: git submodule update -i --recursive

· One min read
$ brew update
error: insufficient permission for adding an object to repository database .git/objects
fatal: failed to write object
fatal: unpack-objects failed
Error: Failure while executing: git pull -q origin refs/heads/master:refs/remotes/origin/master

.git/objects の権限がないらしいので、こういうときは次のコマンドを実行する。

chown -R $(whoami) /usr/local/.git

権限関係なので、これでも実行できないことがある。 そのときはsudoする。

sudo chown -R $(whoami) /usr/local/.git

参考​

▶brew update doesn't work · Issue #10292 · Homebrew/homebrew https://github.com/Homebrew/homebrew/issues/10292

· One min read

Gitのコミットログのユーザ情報を書き換える方法。

git filter-branch --commit-filter ' if [ "$GIT_AUTHOR_NAME" = "old-name" ]; then GIT_AUTHOR_NAME="new-name"; GIT_AUTHOR_EMAIL="new-name@example.jp"; git commit-tree "$@"; else git commit-tree "$@"; fi' HEAD

これで old-name というユーザの場合に new-name のユーザ情報に書き換わる。

· 7 min read

gitを使いたいと思って色々とサービスを調べたんだけど、なんとなく気に入ることが出来なくて…結局、さくらのVPSに構築してみることにした。 まだお試し期間だけど。 今回はUbuntu 11.04にgitリポジトリを用意し、Macからリポジトリを管理する。

gitを管理するにあたって、Gitoliteが使いやすいらしい。 ■ gitのgitによるgit(ユーザ)のためのリポジトリ管理 | Ken's evitation

http://blog.teapla.net/?p=176以前、gitosisについて書いたけど、これよりも細かく管理できるみたい。 使い方は似てるっぽい。

各種サービス

いくつか、有名なサービスのプランを紹介。

■ Plans & Pricing - GitHub

https://github.com/plans
$7/mo 5 Private Repositories 1 Private Collaborator
有名所。 よさそうだけど "5 Private Repositories" ということで、使って壊してを繰り返すことを考えると物足りない? 公開してしまえばいいんだけど…別の理由もあってやめた。 ここはforkして色々出来るのがいいよねっ!って使い方も含めて楽しむのがいいのかも。

■ Pricing/Plans | Assembla

http://www.assembla.com/plans
$100/month
遊びに使う程度だと高い。

■ Plans and pricing for Bitbucket

https://bitbucket.org/plans
Free
ここはgitじゃなくて、mercurialだけど、gitにこだわらないならおすすめ! ちょっと使ってたことあるけど、便利。 安いってもんじゃなく、無料! 数人なら使えるし、wikiも使える。

別の理由 - JIRA

gitを選ばなかったもうひとつの理由。 それはJIRAを使ってみたかったから。 それだけー。

■ JIRA (ジラ) - 価格

http://www.atlassian.com/software/jira/japan-pricing.jsp少人数だったら安いし、使ってみてもいいんじゃないかな?と思ってる。 ただ、これは製品であって、サービスじゃないから自分で管理しなきゃならないけどね。 ちなみに、JIRAもBitbucketもアトラシアン(Atlassian)の製品&サービス。

■ リックソフト株式会社|アトラシアン(Atlassian)製品のプロフェッショナルサービスを提供します

http://www.ricksoft.jp/JIRAの情報はほとんど英語だから、日本語で読みたいとか調べたいなら、このサイトが役立つかも?

本題のGitolite

やっと本題のGitoliteのインストール。 ■ Pro Git - Pro Git 4.8 Git サーバー Gitolitehttp://progit.org/book/ja/ch4-8.htmlこの通りにやれば出来るから、ちょっと気になったことだけメモ。

Gitoliteはサーバー上のgitをクライアントから操作するような仕組みなので、サーバーの管理なんだけど、クライアントで操作する。

サーバー準備

  • git
  • ssh
  • perl
  • gitoliteユーザ

サーバーではこれだけは準備しておく。 gitを使えることが目的だから、gitは必要。 sshはgitを使うときにも、Gitoliteを使うためにも必要。

クライアント準備

  • git
  • ssh
  • ssh-copy-id

gitとsshの必要性はサーバーと同じ。 ssh-copy-idってのは、特定のユーザの公開鍵をサーバーに登録するスクリプト。単なるスクリプトだから、手元に無かったらネットから拾ってくればそのまま使える。

gitoliteユーザのログイン準備

サーバー上のgitoliteユーザがgitをいじれるようにログイン出来るようにする。
ssh-copy-id -i ~/.ssh/id_rsa gitolite@gitserver
id_rsaはsshの秘密鍵のパス。スクリプトを見ると秘密鍵名を元に公開鍵(.pub付きファイル)を利用してる。 gitoliteはサーバー上のgitoliteユーザ。 gitserverはサーバー名。

早速ssh-copy-idを使うんだけど、ssh認証はパスワード認証を許可しておくこと。 ここで鍵を登録してしまえばパスワード認証は拒否設定にしても大丈夫。

ssh gitolite@gitserver pwd

これが実行できて "/home/gitolite" と表示されることを確認しておく。 表示される文字列は環境によるけど、だいたいこうなるでしょう。 逆に言うと、このコマンドが実行できる環境を作るのがssh-copy-idだから、無理してssh-copy-idを使わなくても問題ない。

Gitoliteをインストール

git clone git://github.com/sitaramc/gitolite cd gitolite/src ./gl-easy-install -q gitolite gitserver sitaram
githubからgitoliteを持ってきて、ディレクトリ移動ってのが1, 2行目。 3行目がgitoliteのインストールコマンド。 -qオプションはquiteなので、消すと色々と表示される。 gitoliteはサーバー上のgitoliteユーザ名。 gitserverは先程同様、サーバー名 sitaramはクライアントのユーザ名。

自分の環境ではsakuraサーバーを使ってるし、kenユーザのため、こんな感じに実行した。

./gl-easy-install -q gitolite sakura ken
cd ~/gitolite-admin/

クライアントのホームディレクトリにgitolite-adminが出来ていたらたぶん大丈夫。 gitolite-adminには "conf", "keydir" の2フォルダがある。 confディレクトリには "gitolite.conf" ファイルがある。 keydirディレクトリには "ken.pub" がある。これはgl-easy-installコマンドの最後の引数(クライアントのユーザ名)がファイル名になってる。

設定はgitolite.confを編集、pushすることで行う。 ■ Pro Git - Pro Git 4.8 Git サーバー Gitolite

http://progit.org/book/ja/ch4-8.html#id91編集のしかたなどはこちらをどうぞ。

長々書いたけど、実行したコマンド数を見ればとても簡単にインストール出来ることがわかる。

· 5 min read

Eclipseでgit使いたいなぁ〜と思ったけど、githubなどのサービスは公開リポジトリ以外は有料。 レンタルサーバーもあるし、gitサーバーでも用意するか。

ところで、サーバー側ってどうやって構築するんだろう? 調べてみたらgitosisというツールが見つかった。 今のところこれがお手軽そう。 gitosis自体はPythonで書かれているらしい。

■gitosis - Git リポジトリ群の管理とアクセス制御 vol.0 - openbooth

http://openbooth.org/archives/60.html

以下、上記ページを参考にしつつ、やったこと。

· 2 min read

Ubuntu 8.10にgitをインストールする。 aptでgit-coreを入れてしまえばいいんだけど、パッケージはちょっと古いのでソースからインストール。

まずはgit-coreのコンパイル環境を整える。

sudo apt-get update sudo apt-get build-dep git-core sudo apt-get install libcurl4-openssl-dev sudo apt-get install libexpat-dev sudo apt-get install tcl8.5
ここではlibexpat-devを指定しているが、仮想パッケージなのでliexpat1-devがインストールされる。 これでgitのコンパイル環境が整ったので、gitをダウンロードして展開する。

Git - Fast Version Control System

http://git-scm.com/

展開したgitソースのディレクトリで下記を実行。 下記の場合はユーザディレクトリにインストールされる。 /home/USER/binにインストールされるってこと。

make all make install

Ubuntuの場合は ~/.profile の最後にでも、

PATH=/home/USER/bin:$PATHとでも書いておく。

gitはちょうどよく特集が組まれてた。

WEB+DB PRESS Vol.50