2012-05-15 57 views
2

處理我用Jekyll一個自定義Coderay,所以我要保持2個分支在GitHub上具有傑基爾和Git

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

source分支我有一個_includes文件夾,我忽略了,因爲它只是包含一些硬鏈接。我有一個腳本來管理這兩個分支,但似乎應該有比我想出的更好的東西。

# 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 
+0

要確保我的理解,是您的最終目標在本地預渲染頁面(與你的Coderay),然後把它們運到GitHub上,這樣它是所有服務器呢? –

+0

關於我唯一能想到嘗試的其他事情是創建兩個jekyll實例。一個在本地使用您的插件編寫的插件。這一個的輸出將是你第二個的源代碼目錄,它實際上是推到git的。但我還沒有測試過。有可能會彈出一些陷阱。這可能不值得。 –

回答

1

選項1

更好的爲我的選擇是隻得到完全擺脫了硬鏈接的。我通過製作一個允許在回購之外呈現文件的插件來實現這一點。

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 
+0

有趣的解決方案,我一直在困惑如何維護一個分支上的網站文件,讓github在另一個分支上顯示和源文件。似乎必須有更好的方法,然後每次刪除文件?有[使用'git讀取樹'的解決方案](http://stackoverflow.com/questions/10590156/git-update-the-root-directory-of-a-branch-from-the-subdirectory-of-other )它完成了你在這裏做的同樣的事情,儘管我發現直接使用樹有點奇怪。想法? – cboettig