在Git中嵌套分支

时间:2012-08-07 21:21:24

标签: git github sync

我在GitHub上有一个存储库,它有两个分支,即mastergh-pagesmaster分支基本上是一个静态网站,但是我使用GitHub页面来创建一个带有“演示”按钮的项目页面,让用户看到界面的样子。该项目是LightDM greeter theme,可以在浏览器中运行,也可以在LightDM的Webkit欢迎程序中运行。

只有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

接下来,每当我在任一个分支上进行提交时,我都会挂钩同步themedemo的内容,但这种方法似乎不自然地复杂。

我基本上试图让themedemo相互关联。使用Git有没有一种干净的方法呢?

1 个答案:

答案 0 :(得分:1)

我认为符号链接是最干净的解决方案,除了:

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

钩子的问题是没有克隆,所以用户仍然需要激活那个特定的钩子。
另外,这可能与用户可能拥有的现有结账后挂钩相冲突。

另一个不会与任何现有挂钩发生冲突的解决方案(但仍需要由所述用户克隆您的仓库激活)是content filter driver

content filter driver

查看website中特定文件的可识别内容时,您可以决定创建该符号链接。
我们的想法是,您可以在.gitattributes文件中注册内容过滤器驱动程序脚本(此处为“涂抹”脚本)。 但是用户仍然需要在他/她的git config中声明该过滤器驱动程序。