git-trip 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. data.tar.gz.sig +0 -0
  2. data/History.txt +21 -0
  3. data/Manifest.txt +89 -0
  4. data/README.txt +60 -0
  5. data/Rakefile +31 -0
  6. data/bin/git-trip +0 -0
  7. data/doc/USAGE.txt +54 -0
  8. data/lib/core_ext/hash.rb +15 -0
  9. data/lib/git-trip.rb +23 -0
  10. data/lib/git-trip/errors.rb +22 -0
  11. data/lib/git-trip/gitter.rb +10 -0
  12. data/lib/git-trip/gitter/base.rb +18 -0
  13. data/lib/git-trip/gitter/dir.rb +32 -0
  14. data/lib/git-trip/gitter/uri.rb +40 -0
  15. data/lib/git-trip/paint_mode.rb +52 -0
  16. data/lib/git-trip/painter.rb +167 -0
  17. data/spec/core_ext/hash_spec.rb +25 -0
  18. data/spec/git-trip/errors_spec.rb +43 -0
  19. data/spec/git-trip/gitter/base_spec.rb +15 -0
  20. data/spec/git-trip/gitter/dir_spec.rb +37 -0
  21. data/spec/git-trip/gitter/uri_spec.rb +25 -0
  22. data/spec/git-trip/gitter_spec.rb +11 -0
  23. data/spec/git-trip/paint_mode_spec.rb +56 -0
  24. data/spec/git-trip/painter_spec.rb +173 -0
  25. data/spec/git_trip_spec.rb +23 -0
  26. data/spec/rcov.opts +1 -0
  27. data/spec/spec.opts +4 -0
  28. data/spec/spec_helper.rb +15 -0
  29. data/tasks/ditz.rake +42 -0
  30. data/tasks/docs.rake +68 -0
  31. data/tasks/gittrip.rake +63 -0
  32. data/tasks/rspec.rake +22 -0
  33. data/tasks/site.rake +48 -0
  34. data/tasks/util.rake +44 -0
  35. data/vendor/grit/History.txt +6 -0
  36. data/vendor/grit/Manifest.txt +53 -0
  37. data/vendor/grit/README.txt +213 -0
  38. data/vendor/grit/Rakefile +29 -0
  39. data/vendor/grit/grit.gemspec +16 -0
  40. data/vendor/grit/lib/grit.rb +37 -0
  41. data/vendor/grit/lib/grit/actor.rb +36 -0
  42. data/vendor/grit/lib/grit/blob.rb +117 -0
  43. data/vendor/grit/lib/grit/commit.rb +208 -0
  44. data/vendor/grit/lib/grit/config.rb +44 -0
  45. data/vendor/grit/lib/grit/diff.rb +70 -0
  46. data/vendor/grit/lib/grit/errors.rb +7 -0
  47. data/vendor/grit/lib/grit/git.rb +116 -0
  48. data/vendor/grit/lib/grit/index.rb +77 -0
  49. data/vendor/grit/lib/grit/lazy.rb +31 -0
  50. data/vendor/grit/lib/grit/ref.rb +110 -0
  51. data/vendor/grit/lib/grit/repo.rb +318 -0
  52. data/vendor/grit/lib/grit/tree.rb +99 -0
  53. data/vendor/grit/test/fixtures/blame +131 -0
  54. data/vendor/grit/test/fixtures/cat_file_blob +1 -0
  55. data/vendor/grit/test/fixtures/cat_file_blob_size +1 -0
  56. data/vendor/grit/test/fixtures/diff_2 +54 -0
  57. data/vendor/grit/test/fixtures/diff_2f +19 -0
  58. data/vendor/grit/test/fixtures/diff_f +15 -0
  59. data/vendor/grit/test/fixtures/diff_i +201 -0
  60. data/vendor/grit/test/fixtures/diff_mode_only +1152 -0
  61. data/vendor/grit/test/fixtures/diff_new_mode +17 -0
  62. data/vendor/grit/test/fixtures/diff_p +610 -0
  63. data/vendor/grit/test/fixtures/for_each_ref +0 -0
  64. data/vendor/grit/test/fixtures/for_each_ref_remotes +0 -0
  65. data/vendor/grit/test/fixtures/for_each_ref_tags +0 -0
  66. data/vendor/grit/test/fixtures/ls_tree_a +7 -0
  67. data/vendor/grit/test/fixtures/ls_tree_b +2 -0
  68. data/vendor/grit/test/fixtures/ls_tree_commit +3 -0
  69. data/vendor/grit/test/fixtures/rev_list +26 -0
  70. data/vendor/grit/test/fixtures/rev_list_count +655 -0
  71. data/vendor/grit/test/fixtures/rev_list_single +7 -0
  72. data/vendor/grit/test/fixtures/rev_parse +1 -0
  73. data/vendor/grit/test/fixtures/show_empty_commit +6 -0
  74. data/vendor/grit/test/fixtures/simple_config +2 -0
  75. data/vendor/grit/test/helper.rb +17 -0
  76. data/vendor/grit/test/profile.rb +21 -0
  77. data/vendor/grit/test/suite.rb +6 -0
  78. data/vendor/grit/test/test_actor.rb +35 -0
  79. data/vendor/grit/test/test_blob.rb +74 -0
  80. data/vendor/grit/test/test_commit.rb +182 -0
  81. data/vendor/grit/test/test_config.rb +58 -0
  82. data/vendor/grit/test/test_diff.rb +18 -0
  83. data/vendor/grit/test/test_git.rb +52 -0
  84. data/vendor/grit/test/test_head.rb +22 -0
  85. data/vendor/grit/test/test_real.rb +19 -0
  86. data/vendor/grit/test/test_reality.rb +17 -0
  87. data/vendor/grit/test/test_remote.rb +15 -0
  88. data/vendor/grit/test/test_repo.rb +278 -0
  89. data/vendor/grit/test/test_tag.rb +29 -0
  90. data/vendor/grit/test/test_tree.rb +91 -0
  91. metadata +179 -0
  92. metadata.gz.sig +0 -0
Binary file
@@ -0,0 +1,21 @@
1
+ === 0.0.3 / 2008-07-08
2
+
3
+ Many nice changes, including (but not limited to):
4
+
5
+ * Better handling of internal images.
6
+ * Smarter defaults.
7
+ * More options to GitTrip::Painter
8
+ * GitTrip::Painter#save
9
+ * All new GitTrip::PaintMode, which makes your images pretty!
10
+ * Documentation updates.
11
+
12
+ === 0.0.2 / 2008-07-04
13
+
14
+ * Actually functioning!
15
+
16
+ === 0.0.1 / 2008-07-02
17
+
18
+ * 1 major enhancement
19
+
20
+ * New project.
21
+
@@ -0,0 +1,89 @@
1
+ History.txt
2
+ Manifest.txt
3
+ README.txt
4
+ Rakefile
5
+ bin/git-trip
6
+ doc/USAGE.txt
7
+ lib/core_ext/hash.rb
8
+ lib/git-trip.rb
9
+ lib/git-trip/errors.rb
10
+ lib/git-trip/gitter.rb
11
+ lib/git-trip/gitter/base.rb
12
+ lib/git-trip/gitter/dir.rb
13
+ lib/git-trip/gitter/uri.rb
14
+ lib/git-trip/paint_mode.rb
15
+ lib/git-trip/painter.rb
16
+ spec/core_ext/hash_spec.rb
17
+ spec/git-trip/errors_spec.rb
18
+ spec/git-trip/gitter/base_spec.rb
19
+ spec/git-trip/gitter/dir_spec.rb
20
+ spec/git-trip/gitter/uri_spec.rb
21
+ spec/git-trip/gitter_spec.rb
22
+ spec/git-trip/paint_mode_spec.rb
23
+ spec/git-trip/painter_spec.rb
24
+ spec/git_trip_spec.rb
25
+ spec/rcov.opts
26
+ spec/spec.opts
27
+ spec/spec_helper.rb
28
+ tasks/ditz.rake
29
+ tasks/docs.rake
30
+ tasks/gittrip.rake
31
+ tasks/rspec.rake
32
+ tasks/site.rake
33
+ tasks/util.rake
34
+ vendor/grit/History.txt
35
+ vendor/grit/Manifest.txt
36
+ vendor/grit/README.txt
37
+ vendor/grit/Rakefile
38
+ vendor/grit/grit.gemspec
39
+ vendor/grit/lib/grit.rb
40
+ vendor/grit/lib/grit/actor.rb
41
+ vendor/grit/lib/grit/blob.rb
42
+ vendor/grit/lib/grit/commit.rb
43
+ vendor/grit/lib/grit/config.rb
44
+ vendor/grit/lib/grit/diff.rb
45
+ vendor/grit/lib/grit/errors.rb
46
+ vendor/grit/lib/grit/git.rb
47
+ vendor/grit/lib/grit/index.rb
48
+ vendor/grit/lib/grit/lazy.rb
49
+ vendor/grit/lib/grit/ref.rb
50
+ vendor/grit/lib/grit/repo.rb
51
+ vendor/grit/lib/grit/tree.rb
52
+ vendor/grit/test/fixtures/blame
53
+ vendor/grit/test/fixtures/cat_file_blob
54
+ vendor/grit/test/fixtures/cat_file_blob_size
55
+ vendor/grit/test/fixtures/diff_2
56
+ vendor/grit/test/fixtures/diff_2f
57
+ vendor/grit/test/fixtures/diff_f
58
+ vendor/grit/test/fixtures/diff_i
59
+ vendor/grit/test/fixtures/diff_mode_only
60
+ vendor/grit/test/fixtures/diff_new_mode
61
+ vendor/grit/test/fixtures/diff_p
62
+ vendor/grit/test/fixtures/for_each_ref
63
+ vendor/grit/test/fixtures/for_each_ref_remotes
64
+ vendor/grit/test/fixtures/for_each_ref_tags
65
+ vendor/grit/test/fixtures/ls_tree_a
66
+ vendor/grit/test/fixtures/ls_tree_b
67
+ vendor/grit/test/fixtures/ls_tree_commit
68
+ vendor/grit/test/fixtures/rev_list
69
+ vendor/grit/test/fixtures/rev_list_count
70
+ vendor/grit/test/fixtures/rev_list_single
71
+ vendor/grit/test/fixtures/rev_parse
72
+ vendor/grit/test/fixtures/show_empty_commit
73
+ vendor/grit/test/fixtures/simple_config
74
+ vendor/grit/test/helper.rb
75
+ vendor/grit/test/profile.rb
76
+ vendor/grit/test/suite.rb
77
+ vendor/grit/test/test_actor.rb
78
+ vendor/grit/test/test_blob.rb
79
+ vendor/grit/test/test_commit.rb
80
+ vendor/grit/test/test_config.rb
81
+ vendor/grit/test/test_diff.rb
82
+ vendor/grit/test/test_git.rb
83
+ vendor/grit/test/test_head.rb
84
+ vendor/grit/test/test_real.rb
85
+ vendor/grit/test/test_reality.rb
86
+ vendor/grit/test/test_remote.rb
87
+ vendor/grit/test/test_repo.rb
88
+ vendor/grit/test/test_tag.rb
89
+ vendor/grit/test/test_tree.rb
@@ -0,0 +1,60 @@
1
+ = GitTrip
2
+
3
+ Author:: Dale Campbell <dale@save-state.net>
4
+ Code:: http://github.com/Oshuma/git-trip/
5
+ Site:: http://git-trip.rubyforge.org/
6
+
7
+ === DESCRIPTION:
8
+
9
+ Visualize git commit SHAs. It's nerd acid!
10
+
11
+ === SYNOPSIS:
12
+
13
+ GitTrip is a unique, completely useless, way of visualizing git commit SHA
14
+ strings. Since a single SHA is 40 characters (0-9a-f), you can (for example)
15
+ derive 6 RGB colors from each git object. (40/6 == 6 with 4 characters left over)
16
+ With these 6 colors comes a wide range of possibilities. GitTrip::Painter will
17
+ support multiple 'rendering modes' which will determine what the resulting
18
+ commit image will look like.
19
+
20
+ If you find bugs, or have suggestions, post them on the RubyForge tracker and
21
+ forums, respectively.
22
+
23
+ Tracker:: http://rubyforge.org/tracker/?group_id=6594
24
+ Forums:: http://rubyforge.org/forum/?group_id=6594
25
+
26
+ === REQUIREMENTS:
27
+
28
+ * RMagick - http://rmagick.rubyforge.org/
29
+ * Grit - http://grit.rubyforge.org/
30
+ * JSON - http://json.rubyforge.org/
31
+ * mime-types - http://mime-types.rubyforge.org/
32
+ * open4 - http://raa.ruby-lang.org/project/open4/
33
+
34
+ === INSTALL:
35
+
36
+ # From Github:
37
+ $ gem sources -a http://gems.github.com/ # (You only need to do this once.)
38
+ $ gem install Oshuma-git-trip
39
+
40
+ === USAGE:
41
+
42
+ See doc/USAGE.txt.
43
+
44
+ === LICENSE:
45
+
46
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
47
+ Version 2, December 2004
48
+ http://sam.zoy.org/wtfpl/
49
+
50
+
51
+ Copyright (C) 2008 Dale Campbell <dale@save-state.net>
52
+
53
+ Everyone is permitted to copy and distribute verbatim or modified
54
+ copies of this license document, and changing it is allowed as long
55
+ as the name is changed.
56
+
57
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
58
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
59
+
60
+ 0. You just DO WHAT THE FUCK YOU WANT TO.
@@ -0,0 +1,31 @@
1
+ require 'rubygems'
2
+ require 'hoe'
3
+ require './lib/git-trip.rb'
4
+
5
+ APP_ROOT = File.dirname(__FILE__) unless defined?(APP_ROOT)
6
+
7
+ task :default => [ :spec ]
8
+
9
+ Hoe.new('git-trip', GitTrip::VERSION) do |p|
10
+ p.developer('Dale Campbell', 'dale@save-state.net')
11
+ end
12
+
13
+ # Load any rakefiles in tasks/
14
+ custom_tasks = FileList['tasks/**/*.rake'].sort
15
+ # Load util.rake before any others...
16
+ load custom_tasks.delete('tasks/util.rake')
17
+ # ...now load the rest.
18
+ custom_tasks.each { |task| load task }
19
+
20
+ # Remove un-needed tasks.
21
+ remove_task 'audit'
22
+ remove_task 'generate_key'
23
+ remove_task 'multi'
24
+ remove_task 'post_blog'
25
+ remove_task 'test'
26
+ remove_task 'test_deps'
27
+
28
+ desc 'Start an irb session with Ridge loaded'
29
+ task :console do
30
+ sh "irb -d -I ./lib -r 'git-trip'"
31
+ end
File without changes
@@ -0,0 +1,54 @@
1
+ See the individual class docs for more options and specific examples.
2
+
3
+ # Load it up!
4
+ require 'git-trip'
5
+
6
+ # Grab repository information.
7
+ repo = GitTrip::Gitter::Dir.new('/path/to/repo')
8
+ # .. or ..
9
+ repo = GitTrip::Gitter::URI.new('http://domain.com/path/to/repo')
10
+
11
+ # Now that you have a repository, you can do cool shit.
12
+ repo.commits.each do |commit|
13
+ # GitTrip::Painter requires a commit SHA (string).
14
+ painter = GitTrip::Painter.new(commit)
15
+
16
+ # This does the work of creating a commit specific image.
17
+ painter.paint!
18
+
19
+ # painter's +picture+ now holds a Magick::Image, so all of it's methods are supported.
20
+ painter.picture.display
21
+
22
+ # From this point, you can do something pretty with the image.
23
+ # GitTrip::PaintMode takes a Magick::Image and a mode type.
24
+ pretty = GitTrip::PaintMode.new(painter.picture, :pixel)
25
+
26
+ # Just as with GitTrip::Painter, pretty's +picture+ now holds a Magick::Image.
27
+ pretty.picture.display
28
+ end
29
+
30
+
31
+ If you wanted to use GitTrip in a Rails application, here's an example controller ##create method.
32
+
33
+ # app/controllers/trip_controller.rb
34
+ class TripController < ApplicationController
35
+ def create
36
+ painter = GitTrip::Painter.new(params[:hash])
37
+ painter.paint!
38
+ pretty = GitTrip::PaintMode.new(painter.picture, :blend)
39
+ pretty.picture.format = 'PNG'
40
+ send_data pretty.picture.to_blob,
41
+ :filename => 'trip.png',
42
+ :type => 'image/png',
43
+ :disposition => 'inline'
44
+ end
45
+ end
46
+
47
+ # config/routes.rb
48
+ map.trip 'trip/:hash', :controller => 'trip', :action => 'create'
49
+
50
+ Then use it like so:
51
+
52
+ <img src="http://domain.com/trip/103d8734bd5fb0958ea0b6fa3fe59de7ada96df7" />
53
+
54
+ Slick. Thanks goes to Scott Barron <http://rubyi.st> for that tip.
@@ -0,0 +1,15 @@
1
+ # Extensions to the core Hash class.
2
+ class Hash
3
+ # Turn all string keys into symbols. Returns the modified hash.
4
+ def symbolize_keys
5
+ inject({}) do |options, (key, value)|
6
+ options[key.to_sym || key] = value
7
+ options
8
+ end
9
+ end
10
+
11
+ # Destructive version of symbolize_keys.
12
+ def symbolize_keys!
13
+ self.replace(self.symbolize_keys)
14
+ end
15
+ end
@@ -0,0 +1,23 @@
1
+ $LOAD_PATH.unshift File.dirname(__FILE__)
2
+
3
+ # Third-party libraries...
4
+ require 'rubygems'
5
+ require 'digest/sha1'
6
+ require 'json'
7
+ require 'open-uri'
8
+ require 'RMagick'
9
+
10
+ # ...in ./vendor/
11
+ require 'vendor/grit/lib/grit'
12
+
13
+ # GitTrip libraries.
14
+ require 'core_ext/hash'
15
+ require 'git-trip/errors'
16
+ require 'git-trip/gitter'
17
+ require 'git-trip/paint_mode'
18
+ require 'git-trip/painter'
19
+
20
+ module GitTrip
21
+ VERSION = '0.0.3'
22
+ include GitTrip::Errors
23
+ end
@@ -0,0 +1,22 @@
1
+ module GitTrip
2
+
3
+ # Holds Errors (Exceptions) specific to GitTrip.
4
+ module Errors
5
+ %w{
6
+ DirNotFound
7
+ InvalidFormat
8
+ InvalidGitRepo
9
+ InvalidMode
10
+ InvalidPicture
11
+ InvalidSHA
12
+ InvalidStyle
13
+ InvalidURI
14
+ NoCommits
15
+ NoPicture
16
+ RTFM
17
+ }.each do |problem|
18
+ eval("class #{problem} < Exception; end")
19
+ end
20
+ end # of Errors
21
+
22
+ end
@@ -0,0 +1,10 @@
1
+ module GitTrip
2
+
3
+ require 'git-trip/gitter/base'
4
+ require 'git-trip/gitter/dir'
5
+ require 'git-trip/gitter/uri'
6
+
7
+ module Gitter
8
+ end # of Gitter
9
+
10
+ end
@@ -0,0 +1,18 @@
1
+ module GitTrip
2
+ module Gitter
3
+
4
+ # Provides common git functionality to it's children.
5
+ class Base
6
+ # Returns an array containing each commit SHA.
7
+ def commits
8
+ @data[:commits]
9
+ end
10
+
11
+ # Iterator for the commits.
12
+ def each_commit(&block)
13
+ @data[:commits].each { |commit| yield commit }
14
+ end
15
+ end # of Base
16
+
17
+ end
18
+ end
@@ -0,0 +1,32 @@
1
+ module GitTrip
2
+ module Gitter
3
+
4
+ # Handles fetching git repository information from a directory.
5
+ class Dir < Gitter::Base
6
+ # <tt>dir</tt> should be a path to a git repository (containing a .git/ subdirectory).
7
+ def initialize(dir, options = {})
8
+ raise Errors::DirNotFound unless File.exists?(dir)
9
+ @repo = Grit::Repo.new(dir)
10
+ @data = {}
11
+ setup_data_hash
12
+ end
13
+
14
+ private
15
+
16
+ # Loads the <tt>@data</tt> hash with repository information.
17
+ def setup_data_hash
18
+ load_repo_commits
19
+ end
20
+
21
+ # Loads a hash of commits into <tt>@data[:commits]</tt>.
22
+ def load_repo_commits
23
+ commits = []
24
+ @repo.commits(@repo.head.name, @repo.commit_count).map do |c|
25
+ commits << c.to_s
26
+ end
27
+ @data[:commits] = commits
28
+ end
29
+ end # of Dir
30
+
31
+ end # of Gitter
32
+ end
@@ -0,0 +1,40 @@
1
+ module GitTrip
2
+ module Gitter
3
+
4
+ # Handles fetching git repository information from a remote URI.
5
+ class URI < Gitter::Base
6
+ FORMATS = %w{ json xml yaml }
7
+ PROTOCOLS = %w{ http https }
8
+
9
+ DEFAULTS = {
10
+ :format => 'json'
11
+ }
12
+
13
+ # Takes a +uri+ that returns information about a repository;
14
+ # expects JSON data by default (see FORMATS).
15
+ # The second argument is an optional hash of +options+ (see DEFAULTS).
16
+ #
17
+ # <tt>options</tt> can contain:
18
+ # * <tt>format</tt>: Defaults to 'json'; see FORMATS.
19
+ def initialize(uri, options = {})
20
+ raise Errors::InvalidURI if invalid_uri?(uri)
21
+ @uri = uri
22
+ @options = DEFAULTS.merge(options)
23
+ raise Errors::InvalidFormat if invalid_format?(@options[:format])
24
+ end
25
+
26
+ private
27
+
28
+ # Returns true if the given +format+ is invalid.
29
+ def invalid_format?(format)
30
+ return true unless FORMATS.include?(format)
31
+ end
32
+
33
+ # Returns true if the given +uri+ is invalid.
34
+ def invalid_uri?(uri)
35
+ uri.grep(/^(#{PROTOCOLS.join('|')}):\/\/\w/).empty?
36
+ end
37
+ end # of URI
38
+
39
+ end # of Gitter
40
+ end
@@ -0,0 +1,52 @@
1
+ module GitTrip
2
+
3
+ class PaintMode
4
+ MODES = [
5
+ :blend,
6
+ :pixel,
7
+ :radial
8
+ ]
9
+
10
+ attr_reader :picture
11
+
12
+ # This class takes an +image+ generated from GitTrip::Painter and does
13
+ # something pretty with it. +mode+ can be anything listed in MODES, as
14
+ # a string or symbol. There's a 'picture' reader that returns the
15
+ # generated Magick::Image.
16
+ #
17
+ # Example:
18
+ # painter = GitTrip::Painter.new(commit_sha)
19
+ # painter.paint! # Create the commit specific image.
20
+ # pretty = GitTrip::PaintMode.new(painter.picture, :pixel)
21
+ # # pretty now holds a Magick::Image.
22
+ # pretty.display
23
+ def initialize(image, mode)
24
+ raise Errors::InvalidPicture unless image.is_a?(Magick::Image)
25
+ raise Errors::InvalidMode unless MODES.include?(mode.to_sym)
26
+ @mode = mode.to_sym
27
+ @image = image
28
+
29
+ @picture = case @mode
30
+ when :blend: blend_mode
31
+ when :pixel: pixel_mode
32
+ when :radial: radial_mode
33
+ end
34
+ end
35
+
36
+ # Blend <tt>@image</tt>.
37
+ def blend_mode(distance = 35)
38
+ @image.motion_blur(0, distance, 180)
39
+ end
40
+
41
+ # Pixelize <tt>@image</tt>.
42
+ def pixel_mode
43
+ @image.ordered_dither
44
+ end
45
+
46
+ # Radialize <tt>@image</tt>
47
+ def radial_mode
48
+ @image.radial_blur(90)
49
+ end
50
+ end # of PaintMode
51
+
52
+ end