ghq getをコピーするブックマークレット
ghq
を利用する際に便利なブックマークレットを紹介します。
# ブックマークレット
以下をコピーしてブックマークレットに登録してください。
javascript: ((d) =>
((c, b, l) => {
c.textContent = l.href.replace(/(https:\/(\/[^/]+){3}).*/, "ghq get $1");
b.appendChild(c);
c.select();
d.execCommand("copy");
b.removeChild(c);
})(d.createElement("textArea"), d.body, location))(document);
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 解説
ページ URL からドメイン名/ユーザー名/リポジトリ名
までを抜き出し、ghq get
の後に連結します。
一時的にtextarea
を作るイディオムを使ってクリップボードにコピーします。
# ghq とは
git リポジトリのクローン先を特定のディレクトリにまとめることで管理をしやすくするツールです。
x-motemen/ghq: Remote repository management made easy (opens new window)
ghq get https://github.com/kawarimidoll/kawarimidoll
とすると以下のように設定されたディレクトリ以下にgit clone
を実行します。
実行場所に関わらずクローン先がまとまるので、変な場所にリポジトリが収まることを防げます。
上記では~/ghq
にリポジトリが、このへんは調整可能です。詳細はリポジトリのページを御覧ください。
# リポジトリ移動の tips
クローン先がまとめられるとはいえ、前述の通り~/ghq/github.com/kawarimidoll/kawarimidoll
のように結構深い階層にクローンされます。
ここまで普通に移動しようとすると大変です。
ghq list
でクローンしたディレクトリが一覧できるので、そこから選択して移動するのが楽だと思います。自分はfzf
を使っています。
以下を~/.bashrc
や~/.zshrc
に保存してご利用ください。
cgh() {
has 'ghq' || return 1
local dir
dir=$(ghq list | fzf --no-multi --exit-0 --query="$*" --preview="ls -FA1 $(ghq root)/{}")
[ -n "$dir" ] && cd "$(ghq root)/$dir" || return
}
1
2
3
4
5
6
2
3
4
5
6
# まとめ
ghq
を使いやすくするブックマークレットを紹介しました。
繰り返し行うことはどんどん省力化していきたいものです。
Next
Go勉強始めました