それで、私はより大きな(クローズドソース)プロジェクトを持っており、このプロジェクトのコンテキストで、他の場所でも役立つ可能性のあるライブラリを作成したと思います.
私は今、ライブラリを独自のプロジェクトに分割したいと考えています。これは、github などでオープン ソースとして使用できます。もちろん、ライブラリ (およびそこにあるその履歴) には、プロジェクトの痕跡が含まれていてはなりません。
ここでは git-subtree が解決策のように思えますが、完全には適合しません。
私のディレクトリレイアウトは次のようなものです(Javaプロジェクトであるため):
- フェンシングゲーム (git workdir)
- ソース
- で
- フェンシング_ゲーム
- トランスポート (私のライブラリ)
- プロトコル (ライブラリの一部)
- フェンシング(ライブラリと接続するメイン プロジェクトの一部)
- クライアント(ライブラリと接続するメイン プロジェクトの一部)
- サーバー(ライブラリと接続するメイン プロジェクトの一部)
- クライアント(メイン プロジェクトの一部)
- サーバー(メイン プロジェクトの一部)
- ... (メインプロジェクトの一部)
- トランスポート (私のライブラリ)
- フェンシング_ゲーム
- で
- その他のファイルとディレクトリ (ビルド システム、Web サイトなど - メイン プロジェクトの一部)
- ソース
分割後、ライブラリのディレクトリ レイアウトを次のようにします (太字のディレクトリにあるすべてのファイルを含む)。
- my-library (名前は未定)
- ソース
- で
- フェンシング_ゲーム
- トランスポート (私のライブラリ)
- プロトコル (ライブラリの一部)
- トランスポート (私のライブラリ)
- フェンシング_ゲーム
- で
- ソース
履歴には、リポジトリのこの部分に関係するメイン プロジェクトの履歴の一部のみが含まれている必要があります。
一目見ただけでわかりましgit-subtree split --prefix=src/de/fencing_ame/transport
たが、これは
transport
(コンパイルされない) に根ざしたツリーを教えてください。transport/client
、transport/server
およびtransport/fencing
ディレクトリを含めます。
最初の点は受信側で使用することで軽減できますがgit subtree add --prefix=src/de/fencing_ame/transport <commit>
、git-subtree がこれらのサブディレクトリのエクスポートに対してもあまり効果がないと思います。(アイデアは、ここで完全なツリーを共有できるようにすることです)。
ここを使わないといけないのgit filter-branch
?
分割後、 git-subtree または git-submodule を使用して、メイン プロジェクトのライブラリを現在の場所ではなく別のサブディレクトリにインポートできるようにしたいと考えています。レイアウトはこんな感じ
- フェンシングゲーム (git workdir)
- ソース
- で
- フェンシング_ゲーム
- トランスポート (空)
- フェンシング(ライブラリと接続するメイン プロジェクトの一部)
- クライアント(ライブラリと接続するメイン プロジェクトの一部)
- サーバー(ライブラリと接続するメイン プロジェクトの一部)
- クライアント(メイン プロジェクトの一部)
- サーバー(メイン プロジェクトの一部)
- ... (メインプロジェクトの一部)
- トランスポート (空)
- フェンシング_ゲーム
- で
- マイライブラリ
- ソース
- で
- フェンシング_ゲーム
- トランスポート (私のライブラリ)
- プロトコル (ライブラリの一部)
- トランスポート (私のライブラリ)
- フェンシング_ゲーム
- で
- ソース
- その他のファイルとディレクトリ (ビルド システム、Web サイトなど - メイン プロジェクトの一部)
- ソース