在Git中嵌套分支

问题描述:

我在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?

我觉得符号链接是干净的解决方案,除了:

  • 应该忽略它(如果没有,你总是会得到“beyond a symbolic link”错误)
  • 应当在结账自动生成,通过post-checkout hook

用钩子的问题是,有没有克隆左右,因此用户仍然需要激活特定的钩子。
此外,这可能与用户可能具有的现有后结帐挂钩相冲突。

另一种解决方案,不会与任何现有的钩冲突(但仍需要通过上述用户克隆你的回购被激活)是content filter driver

content filter driver

当在识别的内容看在website内的特定文件中,您可以决定创建该符号链接。
这个想法是一个内容过滤器驱动程序脚本(这里是一个'污迹'脚本)是你可以在.gitattributes文件中注册的东西。
但用户仍然需要在他/她的git配置中声明该过滤器驱动程序。