似たようなQ&Aをたくさん見たので、質問が重複しているように見えるかもしれないことを前もってお詫びします。しかし、私は(ここと一般的にウェブ上で)見つけたものをすべて読み通しましたが、まだ答えがありません。
現在、VCSとしてSVN(TortoiseとAnkhがツール)を使用しており、Gitへの移行を検討しています。私たちの関心は、分岐が関係する場合に、より優れた機能を取得することです。簡単に言えば、私たちのプロジェクトは次のようなものです。
Project1
Project2
SharedCode
これらの2つのプロジェクトはそれぞれ、SharedCodeに密接に依存しています(実際、これらは分離できません)。したがって、Project1で作業している場合は、Project1とSharedCodeで構成されるリポジトリを(常に)チェックアウトできる必要があります。Project2の場合も同様に、Project2とSharedCodeの両方で構成されている必要があります。
名前が示すように、SharedCodeは、共有ライブラリ、共有プロジェクト、および参照ファイルのコレクションです。各プロジェクトは、VisualStudioのソリューションに相当します。つまり、それぞれが実際にはVC#コードプロジェクトのコレクションです。これらの個々のVC#プロジェクトは、参照DLLや、SharedCodeディレクトリに存在する他のVC#コードプロジェクトなど、SharedCode内のものへの参照を持つことになります。
私が本当に強調したいのは、構造が私の問題の最も重要な部分であるということです。「リンクされた」コード(つまり、SharedCode)を特定のコミットにするメソッドを使用できません。プロジェクト1または2と同様に、常にHEAD(最新の公開コード)である必要があります。
これで、それぞれを個別のリポジトリにして、個別にチェックアウトできることを理解しました。しかし、分岐したい場合はどうなりますか?潜在的に危険な状況の例を次に示します。
Project1とSharedCodeを分岐し、それぞれをチェックアウトしました。Project2もチェックアウトしていますが、分岐していません。Project2で作業を開始しますが、Project2はSharedCodeのコードページを使用するため、分岐していないProject2と分岐したSharedCodeのハイブリッドで作業することができます。
したがって、要約すると、Project1とSharedCode、またはProject2とSharedCodeを常にこれらのペアでチェックアウトできるようにしたいと思います。逆に、すべてのコードが整列されたままになるように、変更を一緒にコミットできる必要もあります。
私のオプションは何ですか?同様のニーズ、またはこのシナリオを処理して危険な状況を回避する方法の経験はありますか?
新しいGitリポジトリの構築にご協力いただきありがとうございます。