2012-08-07 63 views
1

我在GitHub上有一個倉庫,它有兩個分支,分別是mastergh-pagesmaster分支基本上是一個靜態網站,但我使用GitHub頁面來創建一個帶有「演示」按鈕的項目頁面,讓用戶可以看到界面的外觀。該項目是LightDM greeter theme,它可以在瀏覽器中運行,也可以通過LightDM的Webkit歡迎程序運行。在Git中嵌套分支

只有gh-pages可以正常向瀏覽器提供HTML,但我將所有工作保留在master分支上。

我的文件結構是這樣的:

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

我試圖符號鏈接demotheme,因爲這兩個必須包含完全相同的內容,但Git的這個錯誤響應:

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

下一頁,我在任何一個分支上做了提交時,都會做出同步themedemo內容的鉤子,但這種方法看起來不自然複雜。

我基本上試圖保持themedemo彼此鏈接。有沒有一種乾淨的方式來使用Git?

回答

1

我覺得符號鏈接是乾淨的解決方案,除了:

  • 應該忽略它(如果沒有,你總是會得到「beyond a symbolic link」錯誤)
  • 應當在結賬自動生成,通過post-checkout hook

用鉤子的問題是,有沒有克隆左右,因此用戶仍然需要激活特定的鉤子。
此外,這可能與用戶可能具有的現有後結帳掛鉤相沖突。

另一種解決方案,不會與任何現有的鉤衝突(但仍需要通過上述用戶克隆你的回購被激活)是content filter driver

content filter driver

當在識別的內容看在website內的特定文件中,您可以決定創建該符號鏈接。
這個想法是一個內容過濾器驅動程序腳本(這裏是一個'污跡'腳本)是你可以在.gitattributes文件中註冊的東西。
但用戶仍然需要在他/她的git配置中聲明該過濾器驅動程序。