gondler
gondler copied to clipboard
Modified: Create Gomfile.lock.
Create Gomfile.lock
An proposal.
- Gomfile
gom 'github.com/golang/glog'
gom 'github.com/golang/lint', commit: '1ad6a0eeb85088d8f32e1c5db9965f4a11c0af70'
gom 'github.com/futoase/underground', branch: 'welcome-to-heaven'
gom 'bitbucket.org/matrixik/listdict', tag: 'tip'
gom 'bitbucket.org/llg/gocreate'
- Gomfile.lock
github.com/golang/glog: commit => c6f9652c7179652e2fd8ed7002330db089f4c9db
github.com/golang/lint: commit => 1ad6a0eeb85088d8f32e1c5db9965f4a11c0af70
github.com/futoase/underground: branch => welcome-to-heaven
bitbucket.org/matrixik/listdict: tag => tip
bitbucket.org/llg/gocreate: commit => 1251907fe3b4ad2cd968ca92db030eb37927f75e
Gomfile.lock を生成しているだけで、何かに利用されているように見えないけれど、これは何を解決したいんでしょう?
本当はgoのパッケージでバージョン番号を扱ってもらえれば良いなと思ったのだけど、
今のところそういう決まりがないので(masterブランチばっかりというのとメタ情報をパッケージ側に保存する仕組みがない...)
branch指定しなかったらhashをGemfile.lock
にでも書きだしたほうがいいかなーと思ったので作ってみました。
bitbucketやgithub.comにあるいろいろなライブラリ見てみたけど、 mercurialだとtipブランチ、github.comだとmasterブランチがある程度で tagですら管理されていないので...
go get
および go install
は自動的に処理系のバージョン名の tag を探して適用する仕組みになっています(go1
など)。
ただ、 tag は変わりうるものなので lock
があることは重要だと感じていますが、生成するだけで利用されないのでは問題なので lock
も考慮してインストールするようにならないといけないですね。
ライブラリアップデートによってHEAD
をgo get しちゃうと
ある日ライブラリのAPIが変わったということで動かなくなってしまった時、
commit logを見るのではなく、Gomfile.lock
を見ることでcheckout先(hash)が確認できていいかなとおもったんですよね。
ただ、 tag は変わりうるものなので lock があることは重要だと感じていますが、生成するだけで利用されないのでは問題なので lock も考慮してインストールするようにならないといけないですね。
fmfm