git-backed, python-implemented, static-code-generating, index-file-supporting blog/website engine
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



is a pretty obvious name.

is a static blog generator.

what does that mean?

* fast
* servable by any webserver ever. srsly.
* multiple index pages (included: year, month, day)
* pretty urls (like /2010/01/01/my_first_post/)
* commandline interface
* git-backed deployment
* markdown syntax
* rss feed template included
* no search though. use google.

what would anyone want more?

oh yes. the downsides.
not featured:
* comments
* anything interactive
* anything interactive at all

why? because it generates static files.

why pygitblog and not $other_git-backed_system?

other git-backed system either do it wrong (don't generate static files but use git as database) or wrong (no ability to do y/m/d/title style urls)

why pygitblog and not $other_non-git-backed_system?

no clue. why are you reading this?

how do i use it?

* ssh to wherever you want to host your blog.
* clone this repository.
* > python init "Blog Title" "Blog Subtitle" ""
* there will be a new git repo in ./blog_title
* serve blog_title/generated/ using your webserver
* git clone ./blog_title to whatever machine

on your local machine:
* write posts by
  > python post
  (will be auto-added when done)
* test by
  > python test
* publish by git push

on the server:
* refresh the blog / publish by
  > python generate
  (should never be neccessary though)

why two git repos?

it sounded like a good idea at the time.


./templates/posts/ has the post template(s)
./templates/indexes has the index template(s)
./templates/indexes also has the rss feed template
./static/design has a very basic css file
./templates/default_post is the empty post file you get when doing > python post


required libraries:
* gitpython
* markdown2
* jinja2