この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
丹内です。
実務では複数のリポジトリを行ったり来たりしますが、その管理にghqを、見やすくするためにpecoを導入しています。最高です。
実務以外でも、gemや気になるコードを気軽にダウンロードして気が向いた時にすぐ見れます。最高です。
参考:ghqでリポジトリ管理とpeco連携で快適git生活
興味がある(いつか読むことがあるかもしれない)コードをダウンロードしてみたので、その方法の備忘録です。
セットアップ
インストールします。
$ brew tap motemen/ghq peco/peco
$ brew install ghq peco
適切にzshの設定をします。 参考:zshにpeco + ghqを導入したメモ
# peco
## ls | p cd
p() { peco | while read LINE; do $@ $LINE; done }
## Ctrl + ] => ghq
function peco-src () {
local selected_dir=$(ghq list -p | peco --prompt "REPOSITORY >" --query "$LBUFFER")
if [ -n "$selected_dir" ]; then
BUFFER="cd ${selected_dir}"
zle accept-line
fi
zle clear-screen
}
zle -N peco-src
bindkey '^]' peco-src
GitHubからPublicリポジトリをダウンロード
ghq getコマンドで一発です。
$ ghq get https://github.com/rails/rails.git
~/.ghq/github.com/rails/rails
にダウンロードされます。
GitHubからPrivateリポジトリをダウンロード
先にssh-keygenで鍵を生成し、GitHub公開鍵を登録しておきます。
その後、~/.ssh/config
に設定を書きます。
Host github-private
User git
Port 22
HostName github.com
IdentityFile ~/.ssh/github-private
TCPKeepAlive yes
IdentitiesOnly yes
念のため、動作確認をしておきます。
$ ssh -T github-private
Saving password to keychain failed
Identity added: /Users/tannai.yuki/.ssh/github-private ((null))
Hi yuukigoodman! You've successfully authenticated, but GitHub does not provide shell access.
動作確認ができたら、.ssh/configと同じ設定の名前でリポジトリをダウンロードします。
$ ghq get github-private:yuukigoodman/sample.git
~/.ghq/github-private/アカウント名/sample
にダウンロードされます。
hg(Mercurial)リポジトリからNginxのソースコードをダウンロード
先にhgをインストールしておきます。
$ brew install hg
リポジトリを探して、ダウンロードします。
$ ghq get http://hg.nginx.org/nginx
Open JDKのソースコードをダウンロード
nginx同様、hgリポジトリからダウンロードします。
$ ghq get http://hg.openjdk.java.net/jdk9/jdk9
その後ダウンロードした先のディレクトリに移動し、ソースコードを取得するコマンドを実行します。
$ cd ~/.ghq/hg.openjdk.java.net/jdk9/jdk9
$ sh ./get_source.sh
時間がかかります。
Virtualboxのソースコードをダウンロード
これはSVNから持ってくるのですが、最初に~/.gitconfig
に設定を加える必要があります。
[ghq "http://www.virtualbox.org/svn/vbox/trunk"]
vcs = svn
そしてダウンロード
$ ghq get http://www.virtualbox.org/svn/vbox/trunk
Androidのソースコードをダウンロード
まずrepoコマンドをインストールします。
$ brew install repo
以下のリポジトリをcloneします。
$ ghq get https://android.googlesource.com/platform/manifest
ダウンロードしたディレクトリに移動し、repo initします。
$ cd /Users/tannai.yuki/.ghq/android.googlesource.com/platform/manifest
$ repo init -u https://android.googlesource.com/platform/manifest
実際にソースコードを取得します。
$ repo sync
非常に長い時間がかかります。寝て起きたら終わっていました。