Question

I created a wonderful GitHub Pages website for my little project, and I added some other pages into the gh-pages branch. My problem is that, everytime I regenerate the website from 'Settings=>Automatic Page Generator', everything is cleaned up and I have to restore the files manually.

Is there a way to prevent, or work around this?

It would have been much better if the Automatic Generator was just overwriting his stuff without removing existing files.

Was it helpful?

Solution

  1. Checkout the gh-pages branch.
  2. mkdir _layouts
  3. move index.html to _layouts
  4. edit _layouts/index.html replace the the inner html of the contents section with {{content}}
  5. make new file index.md
  6. Paste markdown content of automatic page generator into index.md
  7. prepend the following to index.md

    ---
    layout: index
    ---
    
  8. create _config.yml
  9. include the following in _config.yml:

    markdown: kramdown
    kramdown:
       auto_ids: true
    

    this step is to match github's markdown syntax

  10. add & commit changes, and then push branch back to github.

Now you can simply edit index.md from the gh-branch in your github source browser and it will update using jekyll automatically and not mess with anything in your gh-branch.

You can also make more items editable in the layout using place holder {{page.varname}} and then adding varname:your text to the header of your index.md.

OTHER TIPS

Well, after some tries I found the solution.

I noticed that the only file changed for my site was the index.html, the rest of the generated site was the same. Inside the index.html there was a <section>content</section> tag that was containing the html generated from the markdown.

So I created two files header.inc and footer.inc, that contained the "static" part for the index page. The content part should have been generated from the README.md file.

I found that there is an API provided by github to render a RAW markdown in raw mode to html.
So, last piece of the puzzle was to obtain a permalink for the README.md of my project, with the RAW content; which I happened to find here.

So I wrote this simple bash script that regenerates the index.html alone, without touching the rest of the site:

#!/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

Then I just launch the script as:

$ 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

See the implementation details here.

I tested with the "Leap Day" layout; but I suppose it works also for the others.

No, not possible. GitHub wipes the gh-pages repository when you do a "generate". Best you can do is what you are doing now. Another option might be not to use the GitHub page generator to change styles, but to find the source of the styles (they're probably on GitHub somewhere) and manually change them by committing changes (substitute the css files and other minor tweaks)

You can configure Jekyll to skip certain directories with the exclude option.

(Note that Jekyll has a keep_files option -- that is for the files in the destintation directory.)

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top