2013-02-04 8 views
6

私のソフトウェアにはバージョン管理システムgitが使用されています。ソースコード内では、私はgo getを使って自動的にgithubからソフトウェアを取得します。 "double git"の状況をどうやって処理できますか?git + go - goを使ってサブプロジェクトを処理する方法

ディレクトリsrc/github.com/somename/someprojectgit addを実行すると、それ自体がgitリポジトリになりますが、これで何か追加されますか? (git statusを実行するとこのようには見えません)

サブディレクトリが追加されたgit getにはgit submoduleを使用しますか?

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


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

+0

もっと考えると、上記の 'github.com/somename/someproject'サブディレクトリの' .git'ディレクトリを削除したいと思っています。そうすれば、コードをフリーズしてメインリポジトリにプッシュするだけです。醜いが、私はうまく動作すると思う。 – topskip

+2

goven(https://github.com/kr/goven)のように見えます。 – topskip

答えて

3

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

私はこれが "goven"(私の質問の私のコメントを参照)のはずだと思いますが、それを動作させることができませんでした。

2

使用している外国のパッケージのリビジョンを保存する場合は、 インポートのリモートシンタックスがgithub.com/user/project/sub/directory/revisionのようなものをサポートするのが最善の方法ですが、残念なことにそれはありません。 golang-nutsメーリングリストにdiscussionがあります。このトピックについては、可能な解決策と警告を確認してください。

これを行う最も簡単な方法は、使用するプロジェクトをフォークしてフォークをインポートすることです。そのため、アップデートを完全に制御できます。 githubのようなプラットフォームは、そうするのがとても簡単です。 go help remoteから

:新しいパッケージをダウンロードし

は(「ヘルプgopathを行く」を参照)GOPATH環境変数にリストされた最初のディレクトリ に書き込まれます。

したがって、取得中にカスタムGOPATHを指定する必要があるため、提案されたサブモジュール解決策は可能ですが使いやすいものではありません。私はライブラリをフォークし、フォークを参照することをお勧めします。

関連する問題