2

ExpressJS を使用してカスタム ブログ サイトを作成しており、ブログ システムを github でオープンソース化したいと考えています。ただし、contentプロジェクトのフォルダーに個人的なコンテンツがあり、それをサブモジュールとして (bitbucket 上の) 独自のプライベート リポジトリに保持できるようにしたいと考えています。また、メイン プロジェクト リポジトリの一部となるダミーのコンテンツ フォルダーも作成します。

プロジェクト リポジトリをクローンまたはプルするときに、作業コピーにコンテンツ リポジトリをサブモジュールとして含める必要があります。他の誰かがプロジェクト リポジトリをフォークまたはクローンする場合、サブモジュールに分割するのではなく、プロジェクト リポジトリの一部としてダミー コンテンツを取得するようにします。

これまでの最も簡単な方法は何ですか? まだダミー コンテンツを作成していません。プロジェクト構造に大きな変更を加えるのに遅すぎるということはありません。

4

2 に答える 2

2

あなたが説明した正確なシナリオは不可能ですが、プライベートコードバージョンとコードのパブリックバージョン異なるリポジトリを使用する場合を除き、これはあなたが望むものではありません. 2 つのオプションについて説明します。1 つは、問題が解決するまで解決策を突き詰める方法です。もう 1 つは、私にとってより正気であり、Web 開発プロジェクトで使用しているものです。

  1. ただし、提案したディレクトリ構造を使用すると、いくつかの (重要な) 制限付きで、非常に近くなることができます。

    まず、contentsあなたが提案したように、コンテンツを別のリポジトリに移動します。rewrite を使用して git 履歴からコンテンツを消去します (github ヘルプまたは SO で検索してください。これを行う方法はいくつかあります。履歴を新しいコンテンツ リポジトリにエクスポートすることもできます)。

    contents次に、コード リポジトリのディレクトリにダミー コンテンツを作成し、コミットして履歴に追加します。これは、現在 github にプッシュするバージョンです。

    この時点で、個別のクローンを作成して、開発リポジトリと Web サイト リポジトリを分割することをお勧めします。

    git rmWeb サイトの場合は、代わりにリポジトリとその内容を複製しcontents、他のリポジトリのサブモジュールをマウントします。サブモジュールをそのリポジトリにコミットします。ダミーコンテンツの変更を含むマージは面倒になる可能性があることに注意してください。これらの変更をプッシュしないでください。実際、このリポジトリからプッシュすることはありません。あなたは引くだけです。グローバルな (コード ベースに対する) すべての変更は開発リポジトリで行われ、リモート (github) リポジトリを使用してコードを同期します。

  2. ディレクトリ構造を変更する準備ができている場合は、コード リポジトリの外にコンテンツを保持することをお勧めします。通常、コードとコンテンツを1 つのリポジトリに保持しないため、これはとにかく良い選択です (理由はわかりますが、他の理由もあります)。特に Web 開発では、(サーバー側) コードと (クライアント側) コンテンツを分離して、ユーザーがコードに近づかないようにする (コードをドキュメント ルートに保持しない) ことは賢明です。

    その場合、状況は些細なものになり、おそらくreadmeファイルなどで言及されている、githubの別のリポジトリとしてダミーコンテンツを提供することができます.

于 2013-02-18T18:52:31.930 に答える
0

コンテンツ フォルダーを .gitignore に追加します。これにより、コミット時にgitがこのフォルダーを無視します。ファイルではなく構造をコミットしたい場合は、代わりに内部のファイルを .gitignore に追加できます。

以下にいくつかの例を示します: http://www.kernel.org/pub/software/scm/git/docs/gitignore.html

于 2013-02-18T18:47:22.503 に答える