2012-01-03 6 views
7

このプロジェクトでは、いくつかのサードパーティオープンソースライブラリを使用しています。必要に応じてそこからクローニングベンダーリモートは、それを修正として、我々は我々自身のローカルgitリポジトリを作成し、各ライブラリのクローン/プッシュ/プルを使用してリモートロケーションを伝播する

は、元のソースの場所を追加し、内部リモートリポジトリにプッシュ(のは起源、それを呼びましょう )。

これらのリポジトリは、私たちのコアプロジェクトのサブモジュールとして使用されます。

問題: 「ベンダー」リモート URLは「起源」に伝播されていないため、内部ライブラリリポジトリのクローンを誰にも失われます。

ライブラリのための新しい上流の変更をマージするたびに、あなたが見つけて、手動でリモート再びベンダーを追加します(または、それはまだ利用可能だならば、最初に作成した、まったく同じローカルリポジトリを使用)する必要があります。

ベンダーリポジトリURLをすべての開発者が伝播して使用できるように保存する方が良いですか?ライブラリに余分なファイル(例:clone_from_here)を追加しても、それほどエレガントではありません。

答えて

1

.git/configで行うことができます。あなたが成功し引っ張られたり、変更をプッシュした後、.git/configファイルを見て、リポジトリは、あなたの開発者(複数可)によりクローニングされた後、リモートurlfetch

のノートを作る開発者のマシン上.git/configを開き、コピーした行を追加します。例 -

[remote "vendor"] 
    url = [email protected]:xxxxx/xxxxxxx.git 
    fetch = +refs/heads/*:refs/remotes/origin/* 

この例では、開発者はベンダーにプッシュまたはプルできるようになりました。

は、URLをフェッチ記述の詳細コントロールが必要な場合 - http://goo.gl/JGaKD

+0

それがどのブランチに取得するためにどのような情報を復元するために手動でベンダーを追加するよりもわずかに優れている - gitguysでこの上の優れたドキュメントがあります。しかし、クローン作成後に手動でgit repoを編集する必要があります。 – rluba

+0

唯一の他の方法は、コマンドを実行するときに、特定の名前のブランチに具体的にプッシュするような例gitpshなど、誰のプロフィールにもあるエイリアスを作成することです。 –

+0

エレガントな解決策はないようですが、回答。 – rluba