在Git中嵌套分支
问题描述:
我在GitHub上有一个仓库,它有两个分支,分别是master
和gh-pages
。 master
分支基本上是一个静态网站,但我使用GitHub页面来创建一个带有“演示”按钮的项目页面,让用户可以看到界面的外观。该项目是LightDM greeter theme,它可以在浏览器中运行,也可以通过LightDM的Webkit欢迎程序运行。在Git中嵌套分支
只有gh-pages
可以正常向浏览器提供HTML,但我将所有工作保留在master
分支上。
我的文件结构是这样的:
.
├── theme (master)
| ├── index.html
| └── ...
└── website (gh-pages)
├── demo -> contents of ../theme/
├── index.html
└── ...
我试图符号链接demo
到theme
,因为这两个必须包含完全相同的内容,但Git的这个错误响应:
Project/website [ git commit -a "Made some changes"
fatal: 'demo/' is beyond a symbolic link
下一页,我在任何一个分支上做了提交时,都会做出同步theme
和demo
内容的钩子,但这种方法看起来不自然复杂。
我基本上试图保持theme
和demo
彼此链接。有没有一种干净的方式来使用Git?
答
我觉得符号链接是干净的解决方案,除了:
- 应该忽略它(如果没有,你总是会得到“
beyond a symbolic link
”错误) - 应当在结账自动生成,通过post-checkout hook
用钩子的问题是,有没有克隆左右,因此用户仍然需要激活特定的钩子。
此外,这可能与用户可能具有的现有后结帐挂钩相冲突。
另一种解决方案,不会与任何现有的钩冲突(但仍需要通过上述用户克隆你的回购被激活)是content filter driver:
当在识别的内容看在website
内的特定文件中,您可以决定创建该符号链接。
这个想法是一个内容过滤器驱动程序脚本(这里是一个'污迹'脚本)是你可以在.gitattributes
文件中注册的东西。
但用户仍然需要在他/她的git配置中声明该过滤器驱动程序。