びくんびくんしながらコードを書く。

いしきひくい系エンジニアのらくがき帳

ghqとpecoで作るお手軽プロジェクト管理環境

本記事は ディップ with 全部俺 AdventCalendar 12日目の記事です。

今回はPCの開発環境として、ghqとpecoを使ったお手軽なプロジェクト管理の環境のご紹介です。

ghq+pecoにbashが少々入ります。

ghqはgitのRepositoryを設定したルートへいい感じにgit cloneしてくれたりするツールです。
※それ以外の機能もありますが、本件ではあまり触れません。

続いてpecoです。 こちらのツールは標準入力されたデータをインクリメンタルサーチをして選択したら出力するという機能を提供します。

それぞれどのように使っていくのか見てみましょう。

ghq

先に述べたように、設定したルートへいい感じにgit cloneしてくれたりします。
ghq get <Repository> とすると設定したルートから extrepo/author/Repository名 とディレクトリを掘りgit cloneしてくれます。

Go言語を利用している方は上記のディレクトリの掘り方に馴染み深いのではないでしょうか?

また、このルールでgit cloneするため、どのディレクトリにいる状態でも意図した場所にcloneされることも利点の一つです。

.gitconfigに下記設定を入れましょう。

[ghq]
        root = ~/go/src

※私は仕事柄Go言語をよく利用するため、GOPATHに準拠した部分をルートとしています。

peco

こちらも先に説明した以上のことはしません。
bash_profileや、bashrcにpecoのインクリメンタルサーチを便利に使える関数を作成して利用します。

Commandを組み合わせて利用するため、関数を利用します。
特定Repositoryのディレクトリに移動したい場合は下記のような関数を組みます。

function ghql() {
  local selected_file=$(ghq list --full-path | peco --query "$LBUFFER")
  if [ -n "$selected_file" ]; then
    if [ -t 1 ]; then
      cd ${selected_file}
    fi
  fi
}

こうすることで、ghqで出力するフルパスのRepository一覧をpecoで選択し、選択されれば選択されたパスに移動するという挙動を取ります。

まとめ。

これでRepositoryのcloneと移動が格段に楽になりました。
後は自分の使っているエディタでのディレクトリオープンを紐付ければプロジェクトの移動が格段に楽になります。