Goのコードを任意のパスにforkしてcloneして開発したい気持ち

forkして適当なとこにcloneするとimportのパスが

import (
    "github.com/inabajunmr/repo/package"
)

みたいになってて実行時に$GOPATH見に行っちゃうので修正後の挙動が見れないとかテストがどうとかあって、じゃあgo getして$GOPATH以下のコードを直接いじってそっからforkするとか、$GOPATHに直接cloneするとかでいいというのはそれで正しいと思うんだけど(参考)、「おれはgitからcloneして開発する時はコードをここに置きたいんだーーーーーーーーーーーーーーーー」というわがままな気持ちが今のところあって、じゃあどうしよう、的な話を考えていて、git hookでclone時にgomvpkgを叩いてimportをローカルのパスにして、pushする時にまたgomvpkgで元のパッケージ名に戻す、とか考えてたんだけど、Goのコードじゃなくてもhookでgomvpkg動いたりするところとかどうしたらいいのかなー。

makefileかなんかに$GOPATHをカレントにしてからgo runする、みたいのができたらいいのかなと思ったけど$GOPATH以下の/src/github.com/inabajunmrのとこどうやって解消したらいいんだろ。

  • $GOPATHをカレントにする
  • カレントに/src/github.com/inabajunmr/{cloneしたリポジトリ名}へのシンボリックリンクをはる
  • make抜ける時に$GOPATHを戻す

とかでいけるのかな。なんか別のgoのアプリ動かしてるとぶっ壊れたりしないかな。

リポジトリの外のパッケージをimportしてるときに参照できなくてリポジトリごとに同じパッケージがダウンロードされてローカルが同じパッケージだらけになるとかあるしなー。 これも元の$GOPATHをカレントにシンボリックリンクはるとかでなんとかならんかな。

ここまで書いてとりあえず$GOPATHの下で開発でいいじゃんという感じのあれになった。