1

master私は GitHub にとという 2 つのブランチを持つリポジトリを持っていますgh-pagesmasterブランチは基本的に静的な Web サイトですが、私は GitHub ページを使用して、ユーザーがインターフェイスがどのように見えるかを確認できる「デモ」ボタンのあるプロジェクト ページを作成しています。このプロジェクトはLightDM のグリーター テーマであり、ブラウザーでも LightDM の Webkit グリーターでも実行できます。

通常はブラウザに HTML を提供することしかgh-pagesできませんが、私はすべての作業をmasterブランチに保持しています。

私のファイル構造は次のようなものです:

.
├── theme (master)
|   ├── index.html
|   └── ...
└── website (gh-pages)
    ├── demo -> contents of ../theme/
    ├── index.html
    └── ...

demo2 つにはまったく同じ内容が含まれている必要があるため、へのシンボリック リンクを試みましたthemeが、Git は次のエラーで応答します。

Project/website [ git commit -a "Made some changes"
fatal: 'demo/' is beyond a symbolic link

theme次に、いずれかのブランチでコミットを行うたびにandの内容を同期するフックをdemo作成しましたが、この方法は不自然に複雑に思えます。

私は基本的に、お互いを維持themeし、demoリンクしようとしています。Git を使用してこれを行うクリーンな方法はありますか?

4

1 に答える 1

1

次の点を除いて、シンボリックリンクが最もクリーンなソリューションだと思います。

  • 無視する必要があります (そうしないと、常に " beyond a symbolic link" エラーが発生します)。
  • ポストチェックアウトフックを介して、チェックアウト時に自動的に生成される必要があります

フックの問題は、クローンが作成されていないため、ユーザーはその特定のフックを有効にする必要があることです。
さらに、ユーザーが持つ可能性のある既存のチェックアウト後のフックと競合する可能性があります。

既存のフックと競合しない別のソリューション (ただし、ユーザーがレポを複製することによって有効にする必要があります) は、コンテンツ フィルター ドライバーです。

コンテンツ フィルター ドライバー

内の特定のファイルの認識可能なコンテンツを見ると、websiteそのシンボリック リンクを作成することができます。
アイデアは、コンテンツ フィルター ドライバー スクリプト (ここでは「スマッジ」スクリプト) は、.gitattributesファイルに登録できるものであるということです。
ただし、ユーザーは自分の git config でそのフィルター ドライバーを宣言する必要があります。

于 2012-08-08T06:15:25.737 に答える