2012-12-24 21 views
16

Stworzyłem wspaniałe strony GitHub website for my little project i dodałem kilka innych stron do gałęzi gh-pages. Moim problemem jest to, że za każdym razem, gdy ponownie generuję stronę z "Settings => Automatic Page Generator", wszystko jest czyszczone i muszę ręcznie przywrócić pliki.Jak zapobiec temu, aby strony GitHub "Generator automatyczny" usuwały wszystko przed ponownym wygenerowaniem witryny?

Czy istnieje sposób, aby temu zapobiec?

Byłoby znacznie lepiej, gdyby Generator automatyczny właśnie nadpisał swoje dane bez usuwania istniejących plików.

Odpowiedz

36
  1. Zamówienie oddziału gh-pages.
  2. mkdir _layouts
  3. ruch index.html do _layouts
  4. edit _layouts/index.html zastąpić wewnętrzną html zawartości sekcja z {{content}}
  5. zrobić nowy plik index.md
  6. Wklej zawartość Przecena z automatycznym generatorem stron do index.md
  7. następują przed index.md

    --- 
    layout: index 
    --- 
    
  8. tworzyć _config.yml
  9. zawierać następujące elementy w _config.yml:

    markdown: kramdown 
    kramdown: 
        auto_ids: true 
    

    Ten krok jest dopasować GitHub za Markdown składnię

  10. dodać & dokonać zmian, a następnie wcisnąć gałąź z powrotem do github.

teraz po prostu można edytować index.md z gh-branch in your github source browser i będzie aktualizować za pomocą jekyll automatycznie i nie bałagan z niczego w swojej GH-gałęzi.

Możesz także ustawić więcej elementów do edycji w układzie za pomocą uchwytu na miejsce {{page.varname}}, a następnie dodać varname:your text do nagłówka swojego index.md.

+3

dokładnie to, czego szukasz, dziękuję! Musiałem zmienić "layout: index" na "layout: index", aby to działało. W przeciwnym razie pojawi się błąd "deep_merge". – chris838

+2

dlaczego nie jest to w tutorialu stron github !!!! dzięki. – si28719e

+1

To powinna być zaakceptowana odpowiedź. – Matthew

0

Nie, niemożliwe. GitHub ociera repozytorium stron gh, gdy wykonujesz "generowanie". Najlepsze, co możesz zrobić, to to, co teraz robisz. Inną opcją może być nie używanie generatora stron GitHub do zmiany stylów, ale znalezienie źródła stylów (są one prawdopodobnie w GitHub gdzieś) i ręczne ich zmienianie poprzez zatwierdzanie zmian (zastępowanie plików css i innych drobnych poprawek)

2

Po kilku próbach znalazłem rozwiązanie.

Zauważyłem, że jedyny plik zmieniony dla mojej witryny to index.html, reszta wygenerowanej strony była taka sama. Wewnątrz pliku index.html znajdował się znacznik <section>content</section>, który zawierał html wygenerowany ze znacznika.

Tak więc utworzyłem dwa pliki header.inc i footer.inc, które zawierały "statyczną" część strony indeksu. Część treści powinna zostać wygenerowana z pliku README.md.

Znalazłem, że istnieje API dostarczone przez github do render a RAW markdown in raw mode do html.
Ostatnim elementem układanki było uzyskanie permalinka dla README.md mojego projektu z zawartością RAW; które znalazłem here.

Więc napisałem ten simple bash script który regeneruje sam index.html, bez dotykania reszty strony:

#!/bin/sh 
PG_DIR=$(dirname $0) 
RAW_README_URL=https://raw.github.com/lviggiano/owner/master/README.md 
GITHUB_API_URL=https://api.github.com/markdown/raw 

cat $PG_DIR/header.inc 
curl -s $RAW_README_URL | curl -s --data-binary @- -H 'Content-Type: text/plain' $GITHUB_API_URL 
cat $PG_DIR/footer.inc 

Potem wystarczy uruchomić skrypt jako:

$ cd myproject 
$ git checkout gh-pages 
$ git pull origin gh-pages:gh-pages 
$ ./bin/autogen > index.html 
$ git commit -m "updated index.html from latest README.md" index.html 
$ git push origin gh-pages:gh-pages 

Zobacz realizację szczegóły here.

Przetestowałem w układzie "Leap Day"; ale przypuszczam, że działa również dla innych.

0

Możesz configure Jekyll pominąć niektóre katalogi z opcji exclude.

(Zauważ, że Jekyll ma keep_files opcję. - To jest dla plików w katalogu destintation)