6

ソフトウェアのバージョン管理システムを使用しgitています。そして、ソース コードの「内部」で、go getgithub からソフトウェアを自動的にフェッチするために使用します。「ダブル git」の状況をどのように処理できますか?

それ自体が git リポジトリであるgit adddirectoryで実行すると、何かが追加されますか? src/github.com/somename/someproject(実行するとこのようには見えませんgit status

追加されたサブディレクトリに使用する必要がgit submoduleありますか?git get

この状況でのベストプラクティスは何ですか?


編集:$GOPATHソフトウェア プロジェクト用のカスタム環境があります。src/github.com/somename/someprojectこれが、ディレクトリがソフトウェア ディレクトリ階層内にある理由です。

4

2 に答える 2

3

@nemoの答えはおそらく進むべき道ですが、これが私がしたことです。ダウンロードしたリポジトリからファイル.git.gitignoreファイルを削除しました。go get私が持っているソースパスは私のソースディレクトリ内にあります:GOPATH=.../myproject/src/go/。そうすれば、すべてのgo getダウンロードがプロジェクトツリー内にあり、gitで処理できます。

これが「goven」(私の質問に対する私のコメントを参照)が行うことになっていることだと思いますが、私はそれを機能させることができませんでした。

于 2013-02-05T10:26:52.530 に答える
2

使用する外部パッケージのリビジョンを保存する場合は、go importリモート構文がのようなものをサポートするのが最善ですが、github.com/user/project/sub/directory/revision残念ながらサポートされていません。このトピックについては、golang-nutsメーリングリストで議論されています。考えられる解決策と注意事項を確認してください。

これを行う最も簡単な方法は、おそらく、使用するプロジェクトをフォークしてフォークをインポートすることです。これにより、更新を完全に制御できます。githubのようなプラットフォームは、そうすることを本当に簡単にします。

差出人go help remote

新しくダウンロードされたパッケージは、GOPATH環境変数にリストされている最初のディレクトリに書き込まれます(「gohelpgopath」を参照)。

したがって、提案されたサブモジュールソリューションは可能ですが、フェッチ中にカスタムGOPATHを指定する必要があるため、使用は簡単ではありません。ライブラリをフォークして、フォークを参照することをお勧めします。

于 2013-02-04T14:18:24.077 に答える