様々なソースコードをghqで取得し、管理する

この記事は公開されてから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

非常に長い時間がかかります。寝て起きたら終わっていました。