【问题标题】:Dealing with Jekyll and Git处理 Jekyll 和 Git
【发布时间】:2012-05-22 12:27:16
【问题描述】:

我使用 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

【问题讨论】:

  • 关于我能想到的唯一另一件事是创建两个 jekyll 实例。您在本地与您的插件一起使用的一种。这个的输出将是你的第二个的源目录,它实际上是推送到 git 的。我还没有测试过。可能会出现一些陷阱。这可能不值得。

标签: git github branch jekyll


【解决方案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

【讨论】:

  • 有趣的解决方案,我一直在思考如何在一个分支上维护站点文件,以便 github 在另一个分支上显示和源文件。似乎必须有更好的方法,然后每次都删除文件? a solution using git read-tree 完成了与您在这里所做的相同的事情,尽管我发现直接使用树有点奇怪。想法?
猜你喜欢
  • 2012-12-09
  • 2014-01-22
  • 2015-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-25
相关资源
最近更新 更多