様々なソースコードをghqで取得し、管理する
丹内です。
実務では複数のリポジトリを行ったり来たりしますが、その管理に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
非常に長い時間がかかります。寝て起きたら終わっていました。