LoginSignup
0
0

More than 5 years have passed since last update.

MSYS2+mintty+bashでghq導入したらghq.rootがおかしなことになった

Last updated at Posted at 2017-04-17

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で移動するスクリプトを書いてあったので概ね問題なし。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0