motemen/ghq: Remote repository management made easy
最初anyenvから導入しようとして、anyenv入れる段階でうまくいかなかったけど、それは解決したので削除済み。
go入れる
pacmanで入れた。
$ pacman -S mingw-w64-x86_64-go
.bashrcに追記。
export GOPATH=$HOME/.go
export PATH=$GOPATH/bin:$PATH
ghq入れる
$ go get github.com/motemen/ghq
実はGOPATH
の指定忘れたまま上記コマンド実行して、どこにもねーじゃねーか!っつってしばらく詰まってた。
GOPATH
指定がない状態でgo get
するとどこにも保存されないくさい。
ghq.rootの設定がおかしくなる
まさかここまで来て罠があると思わないやん。
ここで.gitconfigに以下を追記。
[ghq]
root = ~/ghq
試しにcatfist/dotfilesをget。
$ ghq get catfist/dotfiles
clone https://github.com/catfist/dotfiles -> \home\<ユーザー名>\ghq/github.com/catfist/dotfiles
git clone https://github.com/catfist/dotfiles \home\<ユーザー名>\ghq/github.com/catfist/dotfiles
Cloning into '/c/home/MM/ghq/github.com/catfist/dotfiles'...
remote: Counting objects: 284, done.
remote: Total 284 (delta 0), reused 0 (delta 0), pack-reused 283
Receiving objects: 100% (284/284), 94.25 KiB | 148.00 KiB/s, done.
Resolving deltas: 100% (109/109), done.
するとプロセスメッセージは出るのだが、探せど~/ghqが存在しない。でも、もっかいgetするともうあるよって言われる。
というか、clone先のパス\home\<ユーザー名>\ghq/github.com/catfist/dotfiles
にバックスラッシュ(あるいは半角¥)とスラッシュが混在してるのが怖すぎるんだけど。
Windows環境では通常パスの階層区切りはバックスラッシュで表現されるが、MSYS2含むターミナル環境ではスラッシュで表現されるじゃないすか。全部スラッシュになってないとおかしいはず。
とにかくgetはできてるんだから、ghqでローカルリポジトリに移動してみんべっつってやってみた。
$ ghq look dotfiles
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\home\<ユーザー名>\ghq\github.com\catfist\dotfiles>
まさかの、Cドライブ直下。
しかもmintty内でコマンドプロンプトが起動しておもろいことになった。(exit
で脱出)
MSYS2環境だと~
つまりホームディレクトリは/home/<ユーザー名>/
であり、ここでいう/home/
はMSYS2インストールディレクトリなわけだが、これがWindows的な意味での\home\<ユーザー名>\
として解釈されてしまっている。
goが単バイナリ生成する前提のモンだからかどうか知らないが、呼び出し元がMSYS2だろうがなんだろうが、パスをWindows風にしか扱わないらしい。
ということは。
[ghq]
root = /msys64/home/<ユーザー名>/ghq
$ ghq get catfist/dotfiles
clone https://github.com/catfist/dotfiles -> \msys64\home\<ユーザー名>\ghq/github.com/catfist/dotfiles
git clone https://github.com/catfist/dotfiles \msys64\home\<ユーザー名>\ghq/github.com/catfist/dotfiles
Cloning into '/home/MM/ghq/github.com/catfist/dotfiles'...
remote: Counting objects: 284, done.
remote: Total 284 (delta 0), reused 0 (delta 0), pack-reused 283
Receiving objects: 100% (284/284), 94.25 KiB | 0 bytes/s, done.
Resolving deltas: 100% (109/109), done.
できた! 相変わらずバックスラッシュとスラッシュが混在してるけど!
ghq lookでコマンドプロンプトが起動してしまう
移動先はMSYS2管理下のディレクトリになったものの、ghq look
実行時にコマンドプロンプトが起動する不具合は相変わらず。
ただし、これはghq list
でローカルリポジトリを特定し、ビルトインcd
で移動するスクリプトを書いてあったので概ね問題なし。