GitXplorerGitXplorer
p

node-treeeater

public
18 stars
6 forks
0 issues

Commits

List of commits on branch master.
Unverified
0e2cd5d3cd997137b9d04180c6579057947282f8

fixed wscript

ddodo committed 13 years ago
Unverified
a6d5c37f81f116f481f03543359b025bac25ff93

no recursion on trees command

ppayload committed 13 years ago
Unverified
bcf0474fe0d1164281346e06958341837c60fb56

Merge pull request #6 from dodo/master

ppayload committed 13 years ago
Unverified
3316f979d5332aad35dae050fc85bc13de60b654

dont mess with order

ddodo committed 13 years ago
Unverified
95cad1dcbe46d23904d977328d5efe421178395e

Merge branch 'master' of git://github.com/payload/node-treeeater

ddodo committed 13 years ago
Unverified
38fb56d6b9c69f047c9c752f374adc079c6bcd63

minor version update :D parsed diff chunk head into a object

ppayload committed 13 years ago

README

The README file for this repository.

treeeater

  • trees are a treat for treeeater
  • use it to call git commands in Node
  • it is written in CoffeeScript and is heavily using its sweet syntactic sugar
  • http://flattr.com - yes, you can give me money :P

principle

  • an asynchronous wrapper around git spawning commands
  • use git help to find out how to get things done
  • specify command line options in an readable and easy way in Coffee Script
  • some output is being parsed into objects which actually make some sense!

usage in Coffee Script

  • provide a callback to get the whole output
git.version console.log
# git version 1.7.5.2
  • or listen on item or data events to get it line-, item- or chunkwise
n = 0
buffer = git.log()
buffer.on 'item', (line) -> console.log "#{n += 1}:", line

buffer = git.cat 'package.json', 'HEAD^'
file = fs.createWriteStream("package.json.bak")
file.on 'open', -> buffer.pipe file
  • put command line arguments as key: value pairs or strings into your call
Git = require 'treeeater'
# an option on construction is default for all calls
git = new Git cwd: 'parrot'
# ~/parrot$ git log -1 --pretty=raw HEAD^^
log = git.log 1:null, pretty:'raw', 'HEAD^^'
log.on 'item', do_something_with_it
# change current working directory, which must exist
git.opts.cwd = 'dead'
# git init --bare -L .
git.init bare:null, L:'.'
  • some functions are not named after git commands and provide some parsed output
n = 0
commits = git.commits()
commits.on 'item', (commit) ->
    if my_email is commit.author.email
        n += 1
commits.on 'close', ->
    console.log "I've authored #{n} commits!"

git.tree 'HEAD', (trees) ->
    coffee = []
    tree = git.tree_hierachy(trees)
    for stuff in tree
        if stuff.type == 'tree'
            for more_stuff in stuff
                if '.coffee' in more_stuff.path
                    coffee.push more_stuff
    console.log "#{coffe.length} coffee files in level 1 subfolders"