トップ «前の日記(2010-10-06) 最新 次の日記(2010-10-20)» 編集

2010-10-13 [長年日記]

_ Git リポジトリの起源を知りたい

以前 jarp で

最初のcommit hash - jarp,

こんなことやってて、変なことやってるなぁと思ってしまったんだけど、

その必要性が分かってしまった

ので自分もやってみた。

というのも git には svn info 相当の情報がないので、今自分の使っているリポジトリが何かよく分からなくなってしまう。もちろん

git remote -v

とかやると origin を表示できたりするんだけど、自分の場合は

origin の同じ複数の git リポジトリを作ってしまう

ので、これだけだと情報量が足りないのだ。というのも

むしろ最近 svn list を使う

で触れたように、svn の中に(今回の編集とは)無関係なファイルが多すぎるので、別個に git リポジトリを作って作業を始めるようにして、不要になった git リポジトリを削除するようにしているんだけど、念のためこの git リポジトリは bundle ファイルを作ってバックアップを作ったりもするので、

同じ svn tree を起源に持つが作った時期も作業内容も違う git tree が複数できる

という、ちょっとどうだろうという状態になってしまう*1。そこで、commit log を見てみるも、すでに混乱したあとでは終盤の commit がよく似ていたりする。

そうだ。最初の commit を見れば違いがはっきりするはず。なんだけど、うっかり

git log -1 --reverse

すると最新の commit だけが出てきてしまう。つまり、-1 だけが有効になっている。正解は

git rev-list --all --reverse | head -1 | xargs git log

--all は jarp の記事では不要っぽいけど、試したリポジトリでは必要だったのでこんな感じにしてみた。

ついでに

alias git-info='git rev-list --all --reverse | head -1 | xargs git log --name-only'

こんなものを用意しておくといざってときに助かるかも、と思った。残念ながら .gitconfig の中ではパイプを使う処理は alias 登録できないみたい。

たぶん、フツーはこんなもの必要ない。

cf.

優しいgitの育て方 : info - ヽ( ・∀・)ノくまくまー - s21g

Tags: Git

*1 いろいろ事情があるのです。staging サーバ内を開発者以外が直接編集したりするのでそのバックアップをひっそり git で取ったり。