# for those of us using git internally
# before committing in the central svn repository.

*.class
*.pyc
*.iml
*.ipr
*.iws
*.zip
*.jar
*.orig
*.rej
*~
.classpath
.project
.settings
.metadata
bin
target
reports
test-output
_buildr.rb
derby.log
