私のgitのプロジェクトはここに保存されていますGOPATHフォルダへのシンボリックリンクは一般的な慣行ですか?
~/dev/git/project1 ...
私はgolangプロジェクトを始めていて、それがGOPATHを使用すると、私のプロジェクトのGitのパスからGOPATHへのシンボリックリンクを作成するのが一般的である必要があるため?
私のgitのプロジェクトはここに保存されていますGOPATHフォルダへのシンボリックリンクは一般的な慣行ですか?
~/dev/git/project1 ...
私はgolangプロジェクトを始めていて、それがGOPATHを使用すると、私のプロジェクトのGitのパスからGOPATHへのシンボリックリンクを作成するのが一般的である必要があるため?
私がやってやることは、代わりに自分の普通のグローバル$GOPATH
に隔離しておきたいgoプロジェクトの中で私自身のGOPATH
を作りました。
src
場合は(~/dev/git/project1
ここで、プロジェクトフォルダに)存在します: は、私は(プロジェクトのルートフォルダに「)b
」スクリプトを作成し、それを作成していない場合。
src/mypackage -> ~/dev/git/project1
を作成します。alias b='. ./b'
、同じ 'b
'( 'ビルド' の短い)は~/dev/git/project1/src/mypackage
に入り、go install
を行います。
main
パッケージをお持ちの場合は、~/dev/git/project1/bin
にバイナリが作成されます。
私のゴープロジェクトは自立していて、普通のの他のゴーパッケージの海では失われません。私は、グローバルプロジェクトのために$GOPATH
をグローバルに予約しています。golang.org/x/tools/cmd/...
、github.com/fzipp/gocyclo
など(他のリンター)。言い換えれば
、私はGOPATH
シンボリックリンクはありません。
私は(ローカルにプロジェクトを言った)ローカルGOPATH
に自分のプロジェクト内の私のパッケージをシンボリックリンクけど、GOPATH自体は任意のシンボリックリンクせずに、いつものように定義された固定フォルダ(私のプロジェクトに再び特定)、である)
そして、ソース依存関係を提供するためにはvendor folderと完全に互換性があります。そのため、パッケージ間の依存関係の問題の
alias b='. ./b'
cd /path/to/my/project
b:
#!/bin/sh
if [ ! -e src ]; then mkdir src ; fi
if [ ! -e src/myproject ]; then ln -s /path/to/my/project src/myproject; fi
cd src/myproject
go install
cd ../..
あなたのこの 'b'スクリプトを共有できますか?これはバッチスクリプトですか? –
@coolbreezeはい、 'ln -s'、' cd'と 'go install'を作る単純なbashスクリプトです。空想的なものではありませんが、私の望む場所でプロジェクトをコンパイルするのに十分です。 – VonC
気にしない場合は投稿できますか? –
、シンボリックリンクをGOPATHのために使用されました。しかし、GOPATHの構造は、それが複数のプロジェクトに使用されていたことを示唆していました。シンボリックリンクは、あなたのGOPATH
が開発者には推奨されていません。
しかし、最新バージョン(1.6)では、パッケージの最上位にあるvendor/
というフォルダの形で、依存関係の問題(1.5で実験的に導入された)の解決策を確定しました。このフォルダは、import文で使用されるパッケージの通常のGOPATH
の前に検索されます。
vendor/
フォルダはるかに少ない時間がかかりGOPATH
をシンボリックリンクよりを使用して作る、godepまたはglideのような依存関係のプロセスを合理化するために使用するためのさまざまなツールがあります。ベンダーパッケージを使用することは、シンボリックリンクされた依存関係よりも再現性が高く、パッケージが誰にでも使えるようになります。
GOPATHをシンボリックリンクせずに、この新しく導入された標準を使用することをおすすめします。
私はgopathをシンボリックリンクしません。私のパッケージを私のgopathにsymlinkします。私は私のプロジェクトでもベンダーを使っています。 – VonC
私は各プロジェクトのGOPATHにもシンボリックリンクしますが、GOPATH内にはシンボリックリンクを入れないでください。 Goツールは依存関係を解決する際にGoalツールを意図的にフォローしません。 – JimB