現在、プロジェクトに取り組んでいます。いくつかの特定のプライベート フォルダーを除外しながら、完全な情報 (作成者など) を含む日々のコミットをオープン ソース化したいと考えています。
ブランチ マスターで A/file1 と B/file2 をコミットするとします。B フォルダーをフィルター処理して GitHub にミラーリングしたいとします (このコミットには A/file1 のみが含まれます)。
私がこれを行うことを考えていた 1 つの方法は、次のようなリモート アップデート フックです。
- newref によって追加されたすべての新しいコミットを一覧表示します (lastfoundcommit..newref としましょう)
- これらのコミットを 1 つずつ修正して (lastfoundcommit から newref まで)、不要なファイルを削除します。
- その過程で、ローカルの master-filtered ブランチが作成される場合があります (ローカルにあると便利な場合)。
- このブランチを公開リポジトリにプッシュします
- 次のプッシュで「lastfoundcommit」を簡単に計算できるように、プライベート コミットとパブリック コミットの間でコミット ID のマッピングを維持する
理想的には、両方の方向に進むことができます (つまり、github ブランチとプル リクエストをインポートし直して、プライベート リポジトリの上に自動的に、または簡単なプロセスで "リベース" できると便利です。おそらくそれほど難しくはありません)。おそらく単なるリベースです)。
これは、サブディレクトリを抽出するのではなく、代わりにさまざまなファイルをフィルタリングすることを除いて、git-subtree ができることと多少似ています。
それは実現可能だと思いますか?または他の提案はありますか?(多分 git filter-branch? または私を助けるかもしれない他の既存のツール/スクリプトに基づいていますか?)
注: サブモジュールは実行可能なオプションではありません。また、「プライベート」ファイルのリストは、時間の経過とともに拡張/変更される可能性があります。