状況
XとYの機能を持つコードがあります。
ボブは、機能Xをさらに開発するために、コードにアクセスする必要があります。
通常、ボブにコードの複製を許可しますが、問題は機能Yが機密であるため、これは不可能です。ボブは、機能Xをさらに開発するために、機能Yのコードを表示できる必要はありません。
ボブと共有する新しいブランチを作成し、コードから機能Yを削除しても、コミット履歴に引き続き表示されます。
だから私は唯一のオプションは次のとおりだと思います:
質問
これについて行くより良い方法はありますか?
努力は少なくありませんが、より永続的な修正は、機能XとYをそれぞれ独自のリポジトリに分割することです。次に、マスターは他のリポジトリをライブラリとして参照するだけです(このためのベストプラクティスはサブモジュールを使用することです)。
このように、独自のリポジトリから直接使用しているため、新しい開発を機能Xに手動で追加する必要はありません。
Tristanが言ったように、可能であれば、機能を独自のリポジトリに分割することがベストプラクティスです。ただし、コードがあまりにも絡み合っている場合は、別の方法があります。
1つは、 [〜#〜] moe [〜#〜] を使用することです。これは、オープンソースバージョンとクローズドソースバージョンの間のリポジトリの変換を基本的に自動化するプログラムです。
もう1つのオプションは、Bob
ブランチを作成してから、彼に送信するパーツをコピーすることです。彼が変更を送信したら、そのブランチをチェックアウトして、すべてのファイルをコピーして戻します。その後、メインブランチにマージして戻すだけです。変更が別のVCSにあったときに、この方法を使用しました。