2016-03-29 9 views
1

私はGitバージョン管理が初めてです。私はちょうど各プロジェクトに独自のリポジトリを持たせたい。ビジュアルスタジオのリポジトリにある共有ライブラリ

Iサブツリーを有するRepoCに

  • Cプロジェクト(共有ライブラリ)のサブツリーを有するRepoBにRepoA
  • Bプロジェクト(共有ライブラリ)で

    1. Aプロジェクト(共有ライブラリ)を作成B及びC

    のサブツリーを有するRepoDに

  • Dプロジェクト(コンソールアプリケーション)のフォルダ構造は以下のようです。あなたが見ることができるように

    Dは

    -B

    -A-

    -C

    -A-

    、フォルダが複製され、そして私はできませんビジュアルスタジオで同じプロジェクトを2回追加します。

    プロジェクトをBフォルダに追加すると、コンパイルエラーが発生します。 Cフォルダ内のプロジェクトは、コンパイルされたことがないので

    メタデータファイルプロジェクトC .....「A.DLL」が 見つかりませんでした、A.DLLがありません。

    Cプロジェクトでは、一度コンパイルされ、それが正常に動作している場合。(CプロジェクトにC.slnまたはA.slnどちらかを開いて)もちろん を、A.DLL、

    が、次の時間があるでしょう他の誰かがgitからDプロジェクトをダウンロードしたら、Dプロジェクトをコンパイルする前にCプロジェクトでCまたはAをコンパイルする必要があります。

    誰もがこのために良い解決策を持っていますか?

  • 答えて

    1

    サブモジュールについて試してみることができます。

    Submodules外国リポジトリはソースツリーの専用サブディレクトリ内に埋め込むことを可能にする、常にコミット特定で指摘。

    git submodule


    あなたがこれまでに行ったように、サブプロジェクトへのあなたの大きなプロジェクトを分割します。投影は、あなたがそれを初期化し、更新する必要があなたのレポTOT追加されると

    git submodule add <url> 
    

    を:
    は今使用して、あなたの主なプロジェクトの各サブプロジェクトを追加します。 のGitのよう

    git submodule init 
    git submodule update 
    

    1.8.2オプション--remote

    git submodule update --remote --merge 
    

    を添加し、新しい意志fetch各サブモジュールの上流から最新の変更、merge them in、およびcheck outサブモジュールの最新リビジョン。 the docsとして

    はそれを説明します。

    --remote

    このオプションは、更新コマンドに対してのみ有効です。スーパープロジェクトの記録したSHA-1を使用してサブモジュールを更新する代わりに、サブモジュールのリモート追跡ブランチのステータスを使用します。

    これは、各サブモジュールでgit pullを実行するのと同じです。


    しかし、どのように私は、親の層で共有コードに影響を及ぼしCでのバグ修正のシナリオにコミット押すでしょうか?再び

    :サブモジュールを使用すると、その内容の一部として、メインプロジェクト内にコードを配置します。フォルダ内にローカルに置くこととサブモジュールの一部として持つことの違いは、サブモジュールではコンテンツが別のスタンドアロンリポジトリに管理(コミット)されることです。


    これは、各プロジェクトがスタンドアロンプ​​ロジェクトである別のプロジェクト内のsubmodule-projectの図です。

    enter image description here


    git subtree

    Gitのサブツリーは、あなたがに非常に類似した別の1

    のサブディレクトリとして任意のリポジトリを挿入することができます主な違いは、コードが管理されている場所です。サブモジュールでは、コンテンツは別のレポに配置され、そこで管理され、他のレポにも複製することができます。

    subtreeルートプロジェクトの一環としてではなく、別のプロジェクトでコンテンツを管理しています。

    セットアップ方法を書き留めておき、使い方を理解する代わりに、この優れたポストを読んだだけで、すべてを説明することができます。

    https://developer.atlassian.com/blog/2015/05/the-power-of-git-subtree/

    +0

    答えてくれてありがとう。私はサブツリーを使いたい。以下の理由により となります。 1.コンソールアプリケーションを開発中にライブラリを更新する必要があります。サブモジュールを使用する場合、別のソリューションでライブラリを開き、コードを変更し、コミットし、プッシュしてから、コンソールソリューションからモジュールを更新する必要があります。これは私がサブモジュールについて理解していることです。 2.サブモジュールであっても、上記の問題は解決しません。 ありがとうございます。 –

    +0

    問題はありません。なぜ、あなたが使用できるオプションについて説明したのですか? – CodeWizard

    +1

    実際にあなたの答えは私がサブツリーをより深く理解するのを助けました。しかし、それは私が望んでいた答えではありませんでしたが、他の答えはありません。私はあなたの答えとして答えます。ありがとう;) –

    関連する問題