我有这样的开发设置:
/themes/themename/css/style.css # path to drupal theme css file
/styleguide/source/css/style.css # path to generated css-file in styleguide
样式指南包含所有不同页面类型的示例标记,这就是设计实现的地方。 drupal主题css文件在git中跟踪,并在master中从stylebuide中生成的css更新。但是,我一直需要检查样式开发是否也在drupal站点中正确显示,同时我实现了设计。因此,我设置了一个软链接,以便:
/themes/themename/css/style.css -> /styleguide/source/css/style.css
这很好用,我可以用drupal视图重新加载Web浏览器,并加载新生成的css文件。
目前我隐藏了一个事实,即使用:
更改了style.css(对于git)git update-index --assume-unchanged /themes/themename/css/style.css
然而,每当我在现有分支上执行git pull或git checkout时,git会抱怨,说:
错误:结帐后,您对以下文件的本地更改将被覆盖:
主题/ uib_w3 / CSS / style.css中
请在更改分支之前提交更改或存储更改 中止
有什么建议我怎么能避免收到这条消息?也许使用一些钩子来重置git pull上的文件,并重新建立链接post pull?或者是否有另一种可能更好的方法?
答案 0 :(得分:2)
你可以"滥用"一个content filter driver,以便在结帐时生成正确的/themes/themename/css/style.css
:
首先,请不要再使用style.css
版本:将其重命名为"模板"。
git mv style.css style.css.tpl
。
将/themes/themename/css/style.css
添加到您的.gitignore
。
第二,在.gitattributes
declaration中添加与*.css.tpl
个文件相关联的涂抹脚本:
*.css.tpl filter=checkcss
(图片来自" Customizing Git - Git Attributes",来自" Pro Git book")
git config filter.checkcss.smudge 'style_smudge'
style_smudge
脚本可以进行版本控制,可以简单如下:
#/bin/sh
cat
简而言之:它在结帐时对style.css.tpl
没有任何作用
但,您可以使用(滥用,真的)涂抹脚本来执行其他操作:
#/bin/sh
if [ -z ${dev+x} ]; then
ln -fs /styleguide/source/css/style.css /themes/themename/css/style.css
else
cp -f /themes/themename/css/style.css.tpl /themes/themename/css/style
fi
cat
如果环境变量名为" dev
"定义(任何值),然后你进入"开发"环境,你需要一个符号链接
如果相同的变量" dev
"未设置,则保留原始style.css
文件。