• Stars
    star
    108
  • Rank 321,259 (Top 7 %)
  • Language
    Ruby
  • License
    ISC License
  • Created over 16 years ago
  • Updated almost 9 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Ridiculously minimalist blogware - write your posts in $EDITOR, then `git-push blog master`. Boom, new posts published.

git-blog Maintenance statusCode quality and healthOpen-source licensing detailsChat on FreenodeTwitter followers

git-blog intends to be blogging, simplified. You'll write your posts in your favorite text editor, with your favorite markup. Then save the post's file, git add the post, and then git push origin master. git-blog, running on your server, will catch the push and parse the post to your static HTML blog. Fast, no dynamic code being run on every load, free post versioning (git revisions), free sections (git branches), freedom of mind.

If you wish to discuss git-blog, or just hang around, feel free to join the #ELLIOTTCABLE channel on Freenode (make sure to say his name to get his attention!)

Philosophy & goals

git-blog will never be featureful, but it will also never be bloated. I doubt I will ever do anything more than parsing the posts to static HTML on every git push.

Note: This project is functional, but not under active development (as is probably obvious from the last-modified dates above.) If anything breaks, please feel free to open an issue or mention it in the IRC channel above. Feature requests are likely to go unfulfilled; but pull-requests are welcome. (=

Getting

The authoritative source for this project is available at http://github.com/elliottcable/git-blog. You can clone your own copy with the following command:

git clone git://github.com/elliottcable/git-blog.git

If you want to make changes to the codebase, you need to fork your own github repository for said changes. Send a pullrequest to elliottcable when you've got something ready for the master that you think should be integrated into the root source.

This project has been forked several times with different goals. Due to an almost draconian anti-bloat policy, as well as other concerns (see the History section below), these haven't been (and probably never will be) merged into the origin repository. One fork worth checking out is evaryont's, which is the official maintained-stable fork of git-blog's original, ultra-simple Rakefile format.

This project is released for public usage under the terms of the very-permissive ISC license (a modern evolution of the MIT / BSD licenses); more information is available in COPYING.

Preparing git-blog

To prepare a new git-blog, run this task from the cloned git-blog repository, replacing ~/Documents/Blog (my personal favorite location) the name of the folder where you want your blog to exist locally:

rake create[~/Documents/Blog]

After this is complete, move to that folder (something along the lines of cd ~/Documents/Blog), and then add any remote repositories to which you wish to push your blog. Most likely, this will include the server hosting your blog to the web. The simplest setup to push to this server is an SSH connection - if you have SSH access to your server/host, you can run this to set up git-blog for pushing:

git remote add blog [email protected]:/path/to/server/blog/folder

This will prepare a remote named 'blog' to which you can push your changes. In addition, if you use GitHub, you can also push your blog there. Create a new repository on GitHub, and then use this to automatically set up that remote for you:

rake github[github_username,github_repo]

Now, you'll want to set up the server to host git-blog - this is fairly simple, about equable to setting up git-blog locally. The only addition, after creating the blog's directory on the server the same as you did locally (rake create[/path/to/server/blog/folder], from within the git-blog clone dir on your server), is preparing the post-receive hook. It's really simple - change directory to your new blog's folder on the server, and run this:

rake servable

Using git-blog

Once your new blog is prepared, you'll want to write a post. Writing a new post is quite simple - run rake post, and it will open your favorite $EDITOR with a post prepared to edit.

You're free to format your blog posts however you want - at the moment there are parsers set up for Markdown, Textile, and Haml - and support for plain text and plain X)HTML. The only restriction when formatting, is that your post's title is on the very first line, formatted plainly in whatever way your parser supports. This title will not appear in the final post, and will instead be sent to the post template.

Once you've finished editing your post, save it, and close the window or exit the editor (whatever is appropriate for your editor of choice) - it will automatically add the new post to the index, and then commit it. You can repeat this process if you want to post more posts before pushing them to the server.

Now just push your beautiful new post(s) to the server:

git push blog

I suggest you run rake deploy before committing any new posts / changes to post - if you have a syntax error in one of your posts, the parser may not like it, and it's preferable to catch this before you commit the changes and push them to your blog.

git-blog will automatically re-parse all of your posts, and create an index file for your blog, after you git push to the server. They're going to end up as simple static HTML, so there's nearly no load on your server when a page is visited - this makes a git-blog inherently faster and cheaper to run than any dynamic blog (such as Wordpress or Expression Engine) could ever be.

Customizing git-blog

Your git-blog's design is all stored in the same repository as your posts - it consists of, simply, two Haml files that are rendered with the posts. One, post.haml, is the layout framework into which your posts' content will be pushed; and the other, index.haml, is the framework for the index page of your blog. Customizing the look and feel of your blog is as simple as modifying these two files to your liking, see the defaults for an example.

The git-blog rakefile itself is meant to be very hackable, and if you want to add further functionality - a different parsing system for your favorite markup, or extensions to the existing parsers for your frequently-used markup, or new blog features such as comments, trackbacks, feeds, and so on... it's as simple as fiddling around with git-blog's core. Don't be afraid, it's meant to be broken! If you do end up adding something cool to git-blog, I would very much appreciate it if you told me, I'll gladly link to your github fork from this README for other users to see.

Requirements

To run git-blog, you need git (obviously) - on a Macintosh, you can install it using MacPorts as follows:

sudo port install git-core

On a Linux or Windows machine, you're a bit more on your own, as I don't know how to install it on Windows, and I'm assuming a person using a Linux distrib is proficient enough to figure it out. In addition, you need the following gems:

  • gem install git
  • gem install haml
  • gem install RedCloth (if you wish to write your posts in Textile)
  • One of the following Markdown libraries (if you wish to write your posts in Markdown)
    • sudo gem install rdiscount
    • sudo gem install rpeg-markdown
    • sudo gem install maruku
    • sudo gem install BlueCloth

To develop and contribute to git-blog, you also need:

  • gem install rspec
  • gem install rake
  • gem install rcov
  • gem install technomancy-ditz --source=http://gems.github.com

More Repositories

1

pin-cushion

Simple, maintained CLI interface to the Pinboard.in API.
JavaScript
126
star
2

ruby.sugar

‹ᴜɴᴍᴀɪɴᴛᴀɪɴᴇᴅ› A Ruby sugar for MacRabbit's Espresso text editor
Ruby
75
star
3

regex.sugar

‹ᴜɴᴍᴀɪɴᴛᴀɪɴᴇᴅ› A Regular Expression sugar for MacRabbit's Espresso text editor.
CSS
49
star
4

Pratchett.js

A JavaScript interpreter for Paws.
CoffeeScript
31
star
5

espresso-sugar-standard

‹ʜɪꜱᴛᴏʀɪᴄᴀʟ› A set of standards for Espresso sugar development
Tcl
29
star
6

System

dotfiles, handy scripts, and new-system configuration stuff
Vim Script
28
star
7

ArchLinux-AMIs

‹ᴜɴᴍᴀɪɴᴛᴀɪɴᴇᴅ› Scaffolding to generate Amazon EC2 AMIs for Arch Linux.
Shell
28
star
8

.gitlabels

This describes a system for adding metadata to a project’s commit messages.
24
star
9

sugar-manager.sugar

Sugar Manager.sugar manages Espresso Sugars. Update / install / browse sugars on GitHub, from within Espresso!
Objective-C
23
star
10

nfoiled

The Rubyist's interface to Ncurses
Ruby
19
star
11

generate-tesla-token

A tiny script to generate Tesla login-tokens quickly.
JavaScript
16
star
12

jello

Mac OS X pasteboard watcher and copy/paste manager
Ruby
15
star
13

typography.js

JavaScript helpers to improve the state of typography on the web
JavaScript
15
star
14

rdie

Bringing back the glory days of tabletop gaming
Ruby
14
star
15

LaunchDR

One stop shop for launchd property list creation. The doctor is *in*!
Ruby
11
star
16

merb_strokedb

StrokeDB plugin for Merb. Allows the use of use_orm :strokedb
Ruby
11
star
17

fora

Open source forum - done *different*
Ruby
10
star
18

vim-menhir

A Vim syntax-definition for .mly files and the Menhir parser-generator
Vim Script
10
star
19

ruby-svg

Library for creating SVG files in pure Ruby code.
Ruby
10
star
20

markdown.sugar

David Czihak's Markdown.sugar for Espresso
9
star
21

poopy.js

This is, really, how JavaScript always should have been. (Compatible with Node.js.)
JavaScript
9
star
22

cocoa_play

Following Aaron Hillegass' "Cocoa Programming for Mac OS X", to some extent.
Objective-C
8
star
23

rat

irssi, for any messaging system, and scriptable in ruby
Ruby
8
star
24

espresso-sharedsupport

Espresso.app's SharedSupport folder
8
star
25

Espresso-Sugar-Xcode-template

An Xcode template to help you get started developing Espresso plug-ins ("Sugars")
Ruby
7
star
26

twilight.foam

Espresso colour theme to match the Twilight TextMate theme.
7
star
27

ocaml-string-convert

Convert between JavaScript UCS-2-encoded strings and OCaml-friendly UTF-8 byte-arrays.
TypeScript
7
star
28

ocaml-ambient-context

Abstraction over thread/continuation/fibre/sequence-local storage mechanisms for implicit communication context-sharing between applications and their transitive dependencies
OCaml
6
star
29

it

Injecting enumerable elements into a block near you!™
Ruby
6
star
30

tunnelr

Making SSH tunnels easy since… about thirty minutes ago, or so.
Ruby
6
star
31

960

960.gs in SASS
Ruby
5
star
32

Base.sugar

An example of building a Cocoa Sugar for Espresso.
5
star
33

stringray

String += Enumerable
Ruby
5
star
34

ppx_trace

A tracing & telemetry syntax extension for packages like ocaml-opentelemetry.
OCaml
5
star
35

blog

My git-blog powered blog's repository
CSS
5
star
36

Speck

Super-light ’n’ sexy specs / testing
Ruby
5
star
37

pertinacious

Ruby objects are weak. They let just anybody push them over.... Pertinacious objects aren't. They'll always be there for you.
Ruby
5
star
38

sugar-debugging.foam

A theme for Espresso that aids Sugar developers in debugging their Sugars visually.
4
star
39

Solcounter.menu

‹ᴜɴᴍᴀɪɴᴛᴀɪɴᴇᴅ› A simple solcounter for your menubar.
Objective-C
4
star
40

excmd.js

Tridactyl's parser for Vi-style command-line, rc-files, and vimscript
Standard ML
4
star
41

my.rb

Auto-roll-your-own 'RubyFacets'-ish snippets, and automatically deploy them with your project
Ruby
4
star
42

rbenv.plugin.zsh

A faster fork of rbenv.plugin.zsh
Shell
4
star
43

from

‹ʜɪꜱᴛᴏʀɪᴄᴀʟ› A ‘code acquisition system’ for Node.js. It’s better than `require()`. What else needs be said?
JavaScript
4
star
44

cord

‹ᴜɴᴍᴀɪɴᴛᴀɪɴᴇᴅ› JavaScript strings that can print themselves, intelligently.
JavaScript
4
star
45

attr_splat

attr_* puts Ruby Core's attr_accessor, attr_reader, and attr_reader on steroids
Ruby
4
star
46

datum

A system for storing metadata on top of Ruby's objects.
4
star
47

refinery

Makes methods 'invincible', and their implementations stackable
Ruby
4
star
48

ystyle

i think ystyle is a pretty cool guy. eh ignored intarnet explerer and doesnt afraid of anything.
Ruby
4
star
49

linktunes.adiumscripts

An Adium script that substitutes in links to the music you are currently listening to. Assumes you're serving your iTunes library over a local webserver.
Ruby
4
star
50

succinct.growlstyle

More of a mumble than a growl.
3
star
51

wolo

Better than a wiki, because I say so
3
star
52

Smock

Keeps off all those messy external libraries when cooking
Ruby
3
star
53

rdie-board

A proof of concept for the RDie game board/map technology.
JavaScript
3
star
54

wikipedi.as

http://wikipedi.as
CoffeeScript
3
star
55

Spark

Rakes are for chumps. *Real* men ignite their specks with sparks!
Ruby
3
star
56

Old-World-Paws.c

A run at an ISO C99 Paws interpreter
C
3
star
57

Miscellany

Uni homework, tutorials, and trash.
Mathematica
3
star
58

sleepsecure

A scraping tool to pull your sleep-data from SleepCycle's SleepSecure sync-service.
JavaScript
3
star
59

percival

‹ᴜɴᴍᴀɪɴᴛᴀɪɴᴇᴅ› Percival painlessly perceives (perhaps, ‘pretty prints’?) peoples’ precious, preferred possessions.
JavaScript
3
star
60

SJS

The hottest new to-JavaScript transpiling language. CoffeeScript is for noobs.
JavaScript
3
star
61

play

A command-line utility that, well, plays media.
2
star
62

server-configuration

*OLD* Instance configuration files.
Ruby
2
star
63

ELLIOTTCABLE.github.io

HTML
2
star
64

nest

The almightly, versatile meta-Enumerable!
Ruby
2
star
65

oi

oi: url scheme manager for OS X
2
star
66

elliottcable.name

My personal website
HTML
2
star
67

Warcrack

Don’t judge me. ;_;
Lua
2
star
68

Slack

Magic makes everybody’s life a little easier, no?
Ruby
2
star
69

JESS

JESS is your friendly neighbourhood JavaScript pre‐compiler. She allows you to tie in transformation modules that make your language more friendly. (Compatible with Node.js.)
JavaScript
2
star
70

grizzly

rawr (Compatible with Node.js.)
JavaScript
2
star
71

task_master

Clean up that Rakefile, you piece of illiterate scum! *whip crack*
Ruby
2
star
72

handsome-bugger-mini

QMK fork for my UniGo66
C
1
star
73

homo

A Pomodoro timer for Harvest users
1
star
74

Spackle.js

Let’s freshen this place up.
JavaScript
1
star
75

jxa-async

Shell
1
star
76

270

Automating & beautifying Chicagoland.
1
star
77

winsome

An awesome theming library for awesome.
Lua
1
star
78

lobby

Welcome to Ruby. Pull up a chair, enjoy yourself.
Ruby
1
star
79

probe

probe() for Node.js
JavaScript
1
star
80

wrange

An assignment.
OCaml
1
star
81

fresh

An awesome-tasty blue'n'green theme for awesome.
Lua
1
star
82

detect-jxa

JavaScript
1
star
83

wool

An awesome light'n'white theme for awesome.
Lua
1
star
84

bs-slash-create

ReScript / BuckleScript bindings to the slash-create library for Discord commands
OCaml
1
star
85

oh-chunk

Oh, chu— is a challenge map for Minecraft, in the vein of Skyblock and SkyGrid.
1
star
86

ELLIOTTCABLE.js

These are my coedz. There are many like them, but these are mine.
CoffeeScript
1
star
87

vim-gfriend

Like vim's built-in gf and gF; with the simple addition of trying to open in a recent nearby split.
Vim Script
1
star
88

particularizable

‹ᴜɴᴍᴀɪɴᴛᴀɪɴᴇᴅ› `enumerable` was taken.
JavaScript
1
star
89

Cest.c

‹ᴜɴᴍᴀɪɴᴛᴀɪɴᴇᴅ› A small and simplistic unit-testing library for ISO C.
C
1
star
90

ppx-deriving

JavaScript
1
star
91

taupe

Isn’t it such a pretty colour? A short-url server for Twitter in Node.js.
JavaScript
1
star
92

ANAL

JavaScript
1
star