处理Jekyll和Git

时间:2012-05-15 01:43:32

标签: git github branch jekyll

我将Jekyll与自定义Coderay一起使用,因此我必须在GitHub上维护2个分支

master; The generated HTML site
source; Markdown files, etc

source分支上,我有一个_includes文件夹,我忽略它,因为它只包含一些硬链接。我有一个脚本来管理2个分支,但似乎应该有比我想出的更好的东西。

# Start on "source" branch
jekyll /tmp
git checkout master
git stash -u # _includes
rm -r * # keeps ".git"
cp -r /tmp/* .
git add -A
git commit
git push origin master
git checkout source
git stash apply

1 个答案:

答案 0 :(得分:1)

选项1

对我来说更好的选择是完全摆脱硬链接。我这样做是通过制作一个允许在repo之外渲染文件的插件。

render_partial.rb

module Jekyll
    class IncludeTag < Liquid::Tag
        def initialize(tag_name, file, tokens)
            super
            @file = file.strip
        end
        def render(context)
            File.read(@file)
        end
    end
end
Liquid::Template.register_tag('render_partial', Jekyll::IncludeTag)

选项2

如果您想保留硬链接,此选项将起作用。

help.github.com/ignore-files

#!/bin/sh
# Initial setup, configure excludes
cat > .git/info/exclude <<EOF
_includes
_site
EOF
# Commit source branch
git checkout source
git add -A
git commit -m 'new post'
git push origin source
# Commit master branch
jekyll
git checkout master
git rm -r .
cp -r _site/* .
git add -A
git commit -m 'new post'
git push origin master