right_git 0.0.3 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --colour
2
+ --format=nested
3
+ --backtrace
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.3
1
+ 0.1.0
@@ -0,0 +1,9 @@
1
+ module RightGit::Git
2
+ module BelongsToRepository
3
+ attr_reader :repo
4
+
5
+ def logger
6
+ repo.logger
7
+ end
8
+ end
9
+ end
@@ -29,8 +29,16 @@ module RightGit::Git
29
29
  # like a string, whose value is the name of the branch. This allows branches
30
30
  # to be sorted, matched against Regexp, and certain other string-y operations.
31
31
  class Branch
32
- BRANCH_NAME = '[#A-Za-z0-9._\/-]+'
32
+ include ::RightGit::Git::BelongsToRepository
33
+
34
+ # Regexp fragment that matches a valid Git branch name consisting of alphanumerics
35
+ # plus the punctuation characters "#", "." "_", "/" and "-".
36
+ BRANCH_NAME = '[#A-Za-z0-9._\/+-]+'
37
+
38
+ # Regexp that matches a line of Git output containing information about a branch.
33
39
  BRANCH_INFO = /^(\* | )?(#{BRANCH_NAME})( -> #{BRANCH_NAME})?$/
40
+
41
+ # Regexp that matches a valid Git branch name, possibly prepended by "remotes/"
34
42
  BRANCH_FULLNAME = /(remotes\/)?(#{BRANCH_NAME})/
35
43
 
36
44
  DEFAULT_DISPLAY_WIDTH = 40
@@ -39,7 +47,7 @@ module RightGit::Git
39
47
 
40
48
  class BranchError < GitError; end
41
49
 
42
- attr_reader :repo, :fullname
50
+ attr_reader :fullname
43
51
 
44
52
  # @param [Repository] repo hosting branch
45
53
  # @param [String] line of git output describing branch
@@ -52,18 +60,22 @@ module RightGit::Git
52
60
  @remote = !!(match[1] || fullname.index('/'))
53
61
  @repo = repo
54
62
  else
55
- raise BranchError, 'Unreachable due to already matching name pattern'
63
+ raise BranchError, "Internal error; matched info but not fullname of #{line.inspect}"
56
64
  end
57
65
  else
58
- raise BranchError, "Unrecognized branch info: #{line.inspect}"
66
+ raise BranchError, "Malformed branch name #{line.inspect}"
59
67
  end
60
68
  end
61
69
 
62
- # @return [String] stringized
70
+ # Provide a String representation of this branch (specifically, its fullname).
63
71
  def to_s
64
- "#{self.class.name}: #{@fullname.inspect}"
72
+ fullname.to_s
73
+ end
74
+
75
+ # Provide a programmer-friendly representation of this branch.
76
+ def inspect
77
+ '#<%s:%s>' % [self.class.name, fullname.inspect]
65
78
  end
66
- alias inspect to_s
67
79
 
68
80
  # @param [Regexp] regexp
69
81
  # @return [Integer] match offset
@@ -96,7 +108,7 @@ module RightGit::Git
96
108
  @remote
97
109
  end
98
110
 
99
- # @return [String] name of branch sans origin (if any)
111
+ # @return [String] name of branch sans name of remote (if any)
100
112
  def name
101
113
  if remote?
102
114
  #remove the initial remote-name in the branch (origin/master --> master)
@@ -126,9 +138,9 @@ module RightGit::Git
126
138
  # @return [TrueClass] always true
127
139
  def delete
128
140
  if self.remote?
129
- @repo.vet_output("push origin :#{self.name}")
141
+ repo.vet_output("push origin :#{self.name}")
130
142
  else
131
- @repo.vet_output("branch -D #{@fullname}")
143
+ repo.vet_output("branch -D #{@fullname}")
132
144
  end
133
145
  true
134
146
  end
@@ -28,38 +28,103 @@ module RightGit::Git
28
28
  # A collection of Git branches. Acts a bit like an Array, allowing it to be
29
29
  # mapped, sorted and compared as such.
30
30
  class BranchCollection
31
+ include ::RightGit::Git::BelongsToRepository
32
+
33
+ # Regexp matching (and capturing) the output of 'git symbolic-ref'; used to determine which
34
+ # branch is currently checked out.
35
+ HEAD_REF = %r{^refs/heads/(#{Branch::BRANCH_NAME})$}
36
+
37
+ # The output of 'git symbolic-ref' when the HEAD ref is not on any branch.
38
+ NO_HEAD_REF = /^HEAD is not a symbolic ref$/
39
+
40
+ # The output of the 'git branch' command when the HEAD ref is not on any branch.
41
+ # This is not useful to RightGit, so we must filter it out of Git's output when
42
+ # we see it.
43
+ NO_BRANCH = '* (no branch)'
44
+
45
+ # Create a new BranchCollection. Don't pass in a branches parameter unless you really know
46
+ # what you're doing; it's intended more for internal use than anything else.
47
+ #
31
48
  # @param [Repository] repo to host branch collection
32
- # @param [Array] args as subset of branches or empty
33
- def initialize(repo, *args)
49
+ # @param optional [Array] branches an array of Branch objects, or nil to auto-populate this collection with ALL branches
50
+ def initialize(repo, branches=nil)
34
51
  @repo = repo
35
- @branches = args
52
+
53
+ if branches
54
+ # Use an arbitrary set of branches that was passed in
55
+ @branches = branches
56
+ else
57
+ @branches = []
58
+
59
+ # Initialize ourselves with all branches in the repository
60
+ git_args = ['branch', '-a']
61
+ @repo.git_output(git_args).lines.each do |line|
62
+ line.strip!
63
+
64
+ if line == NO_BRANCH
65
+ #no-op; ignore this one
66
+ else
67
+ @branches << Branch.new(@repo, line)
68
+ end
69
+ end
70
+ end
36
71
  end
37
72
 
73
+ # Provide a String representation of this collection, depicting it as a comma-separated list of
74
+ # branch names.
38
75
  def to_s
39
- "#{self.class.name}: #{@branches.inspect}"
76
+ @branches.join(',')
40
77
  end
41
- alias inspect to_s
42
78
 
43
- # Filters on local branches.
79
+ # Provide a programmer-friendly representation of this collection.
80
+ def inspect
81
+ '#<%s:%s>' % [self.class.name, @branches.inspect]
82
+ end
83
+
84
+ # Return a Branch object representing whichever branch is currently checked out, IF AND ONLY IF
85
+ # that branch is a member of the collection. If the current branch isn't part of the collection
86
+ # or HEAD refers to something other than a branch, return nil.
87
+ #
88
+ # @return [Branch] the current branch if any, nil otherwise
89
+ def current
90
+ lines = @repo.git_output(['symbolic-ref', 'HEAD'], :raise_on_failure => false).lines
91
+
92
+ if lines.size == 1
93
+ line = lines.first.strip
94
+ if (match = HEAD_REF.match(line))
95
+ @branches.detect { |b| b.fullname == match[1] }
96
+ elsif line == NO_HEAD_REF
97
+ nil
98
+ end
99
+ else
100
+ raise GitError, "Unexpected output from 'git symbolic-ref'; need 1 lines, got #{lines.size}"
101
+ end
102
+ end
103
+
104
+ # Return another collection that contains only the local branches in this collection.
44
105
  #
45
106
  # @return [BranchCollection] local branches
46
107
  def local
47
- local = BranchCollection.new(@repo)
108
+ local = []
109
+
48
110
  @branches.each do |branch|
49
111
  local << branch unless branch.remote?
50
112
  end
51
- local
113
+
114
+ BranchCollection.new(@repo, local)
52
115
  end
53
116
 
54
- # Filters on remote branches.
117
+ # Return another collection that contains only the local branches in this collection.
55
118
  #
56
119
  # @return [BranchCollection] remote branches
57
120
  def remote
58
- remote = BranchCollection.new(@repo)
121
+ remote = []
122
+
59
123
  @branches.each do |branch|
60
124
  remote << branch if branch.remote?
61
125
  end
62
- remote
126
+
127
+ BranchCollection.new(@repo, remote)
63
128
  end
64
129
 
65
130
  # Queries and filters on branches reachable from the given revision, if any.
@@ -68,18 +133,23 @@ module RightGit::Git
68
133
  #
69
134
  # @return [BranchCollection] merged branches
70
135
  def merged(revision)
71
- git_args = ['branch', '-r', '--merged', revision]
72
- all_merged = @repo.git_output(git_args).lines.map do |line|
73
- Branch.new(@repo, line)
136
+ # By hand, build a list of all branches known to be merged into master
137
+ git_args = ['branch', '-a', '--merged', revision]
138
+ all_merged = []
139
+ @repo.git_output(git_args).lines.each do |line|
140
+ line.strip!
141
+ all_merged << Branch.new(@repo, line)
74
142
  end
75
143
 
76
- merged = BranchCollection.new(@repo)
144
+ # Filter the contents of this collection according to the big list
145
+ merged = []
77
146
  @branches.each do |candidate|
78
147
  # For some reason Set#include? does not play nice with our overridden comparison operators
79
148
  # for branches, so we need to do this the hard way :(
80
149
  merged << candidate if all_merged.detect { |b| candidate == b }
81
150
  end
82
- merged
151
+
152
+ BranchCollection.new(@repo, merged)
83
153
  end
84
154
 
85
155
  # Accessor that acts like either a Hash or Array accessor
@@ -93,15 +163,25 @@ module RightGit::Git
93
163
  end
94
164
  end
95
165
 
166
+ # Dispatch to the underlying Array of Branch objects, allowing the branch collection to act a
167
+ # bit like an Array.
168
+ #
169
+ # If the dispatched-to method returns an Array, it is wrapped in another BranchCollection object
170
+ # before returning to the caller. This allows array-like method calls to be chained together
171
+ # without losing the BranchCollection-ness of the underlying object.
96
172
  def method_missing(meth, *args, &block)
97
173
  result = @branches.__send__(meth, *args, &block)
98
174
 
99
175
  if result.is_a?(::Array)
100
- BranchCollection.new(@repo, *result)
176
+ BranchCollection.new(@repo, result)
101
177
  else
102
178
  result
103
179
  end
104
180
  end
105
181
 
182
+ # Polite implementation of #respond_to that honors our #method_missing.
183
+ def respond_to?(meth)
184
+ super || @branches.respond_to?(meth)
185
+ end
106
186
  end # BranchCollection
107
187
  end # RightGit
@@ -27,12 +27,12 @@ module RightGit::Git
27
27
 
28
28
  # A commit within a Git repository.
29
29
  class Commit
30
- COMMIT_INFO = /^([0-9A-Fa-f]+) ([0-9]+) (.*)$/
31
-
30
+ include ::RightGit::Git::BelongsToRepository
31
+ LOG_FORMAT_LONG = "%H %at %aE %s"
32
+ LOG_FORMAT = "%h %at %aE %s"
33
+ COMMIT_INFO = /^([0-9A-Fa-f]+) ([0-9]+) (\S+) (.*)$/
32
34
  COMMIT_SHA1_REGEX = /^[0-9a-fA-F]{40}$/
33
35
 
34
- attr_reader :repo
35
-
36
36
  class CommitError < GitError; end
37
37
 
38
38
  # @param [Repository] repo hosting commit
@@ -42,18 +42,23 @@ module RightGit::Git
42
42
  unless match = COMMIT_INFO.match(line)
43
43
  raise CommitError, "Unrecognized commit summary: #{line.inspect}"
44
44
  end
45
- @info = [ match[1], Integer(match[2]), match[3] ]
45
+ @info = [ match[1], Integer(match[2]), match[3], match[4] ]
46
46
  end
47
47
 
48
- # @return [String] stringized
48
+ # Provide a String representation of this commit (specifically, its commit hash).
49
49
  def to_s
50
- "#{self.class.name}: #{@info.inspect}"
50
+ hash
51
+ end
52
+
53
+ # Provide a programmer-friendly representation of this branch.
54
+ def inspect
55
+ '#<%s:%s>' % [self.class.name, hash]
51
56
  end
52
- alias inspect to_s
53
57
 
58
+ # The commit hash. This overrides String#hash on purpose
59
+ #
54
60
  # @return [String] hash of commit (may be abbreviated)
55
61
  def hash
56
- # This overrides String#hash on purpose
57
62
  @info[0]
58
63
  end
59
64
 
@@ -67,6 +72,13 @@ module RightGit::Git
67
72
  @info[2]
68
73
  end
69
74
 
75
+ # @return [String]
76
+ def subject
77
+ @info[3]
78
+ end
79
+
80
+ alias comment subject
81
+
70
82
  # @return [TrueClass|FalseClass] true if the given revision is a (fully qualified, not abbreviated) commit SHA
71
83
  def self.sha?(revision)
72
84
  !!COMMIT_SHA1_REGEX.match(revision)
@@ -23,6 +23,9 @@
23
23
  # ancestor
24
24
  require 'right_git/git'
25
25
 
26
+ # dependencies
27
+ require 'right_support'
28
+
26
29
  module RightGit::Git
27
30
 
28
31
  # Provides an API for managing a git repository that is suitable for
@@ -31,28 +34,32 @@ module RightGit::Git
31
34
  # not covered here. What is provided are APIs for cloning, fetching, listing
32
35
  # and grooming git-related objects.
33
36
  class Repository
37
+ include RightSupport::Log::Mixin
38
+
34
39
  COMMIT_SHA1_REGEX = /^commit ([0-9a-fA-F]{40})$/
35
40
 
36
41
  SUBMODULE_STATUS_REGEX = /^([+\- ])([0-9a-fA-F]{40}) (.*) (.*)$/
37
42
 
38
- attr_reader :repo_dir, :logger, :shell
43
+ attr_reader :repo_dir, :shell
39
44
 
40
45
  # @param [String] repo_dir for git actions or '.'
41
46
  # @param [Hash] options for repository
42
47
  # @option options [Object] :shell for git command execution (default = DefaultShell)
43
- # @option options [Logger] :logger for logging (default = STDOUT)
48
+ # @option options [Logger] :logger custom logger to use; (default = class-level logger provided by Log::Mixin)
44
49
  def initialize(repo_dir, options = {})
45
50
  options = {
46
51
  :shell => nil,
47
52
  :logger => nil
48
53
  }.merge(options)
54
+
49
55
  if repo_dir && ::File.directory?(repo_dir)
50
56
  @repo_dir = ::File.expand_path(repo_dir)
51
57
  else
52
58
  raise ::ArgumentError.new('A valid repo_dir is required')
53
59
  end
60
+
54
61
  @shell = options[:shell] || ::RightGit::Shell::Default
55
- @logger = options[:logger] || ::RightGit::Shell::Default.default_logger
62
+ self.logger = options[:logger] || self.class.logger
56
63
  end
57
64
 
58
65
  # Factory method to clone the repo given by URL to the given destination and
@@ -110,12 +117,19 @@ module RightGit::Git
110
117
  true
111
118
  end
112
119
 
113
- # Factory method for a branch object referencing this repository.
120
+ # @deprecated alias for #branch
121
+ def branch_for(branch_name)
122
+ warn "#{self.class.name}#branch_for is deprecated; please use #{self.class.name}#branch instead"
123
+ branch(branch_name)
124
+ end
125
+
126
+ # Factory method for a branch object referencing this repository. The branch may be
127
+ # hypothetical (e.g. does not exist yet).
114
128
  #
115
129
  # @param [String] branch_name for reference
116
130
  #
117
131
  # @return [Branch] new branch
118
- def branch_for(branch_name)
132
+ def branch(branch_name)
119
133
  Branch.new(self, branch_name)
120
134
  end
121
135
 
@@ -123,25 +137,17 @@ module RightGit::Git
123
137
  # directory.
124
138
  #
125
139
  # @param [Hash] options for branches
126
- # @option options [TrueClass|FalseClass] :all is true to include remote branches (default), else local only
140
+ # @option options [Boolean] :all true to include remote branches, else local only (default)
127
141
  #
128
142
  # @return [Array] list of branches
129
143
  def branches(options = {})
130
- options = {
131
- :all => true
132
- }.merge(options)
133
- git_args = ['branch']
134
- git_args << '-a' if options[:all] # note older versions of git don't accept --all
135
144
  branches = BranchCollection.new(self)
136
- git_output(git_args).lines.each do |line|
137
- # ignore the no-branch branch that git helpfully provides when current
138
- # HEAD is a tag or otherwise not-a-branch.
139
- unless line.strip == '* (no branch)'
140
- branch = Branch.new(self, line)
141
- branches << branch if branch
142
- end
145
+
146
+ if options[:all]
147
+ branches
148
+ else
149
+ branches.local
143
150
  end
144
- branches
145
151
  end
146
152
 
147
153
  # Factory method for a tag object referencing this repository.
@@ -166,6 +172,7 @@ module RightGit::Git
166
172
  # @param [Hash] options for log
167
173
  # @option options [Integer] :skip as lines of most recent history to skip (Default = include most recent)
168
174
  # @option options [Integer] :tail as max history of log
175
+ # @option options [TrueClass|FalseClass] :merges as true to exclude non-merge commits
169
176
  # @option options [TrueClass|FalseClass] :no_merges as true to exclude merge commits
170
177
  # @option options [TrueClass|FalseClass] :full_hashes as true show full hashes, false for (7-character) abbreviations
171
178
  #
@@ -173,7 +180,8 @@ module RightGit::Git
173
180
  def log(revision, options = {})
174
181
  options = {
175
182
  :skip => nil,
176
- :tail => 1_000,
183
+ :tail => 10_000,
184
+ :merges => false,
177
185
  :no_merges => false,
178
186
  :full_hashes => false,
179
187
  }.merge(options)
@@ -181,12 +189,13 @@ module RightGit::Git
181
189
  git_args = [
182
190
  'log',
183
191
  "-n#{options[:tail]}",
184
- "--format=\"%#{options[:full_hashes] ? 'H' : 'h'} %at %aE\"" # double-quotes are Windows friendly
192
+ "--format=\"#{options[:full_hashes] ? Commit::LOG_FORMAT_LONG : Commit::LOG_FORMAT}\"" # double-quotes are Windows friendly
185
193
  ]
186
194
  git_args << "--skip #{skip}" if skip
195
+ git_args << "--merges" if options[:merges]
187
196
  git_args << "--no-merges" if options[:no_merges]
188
197
  git_args << revision if revision
189
- git_output(git_args).lines.map { |line| Commit.new(self, line) }
198
+ git_output(git_args).lines.map { |line| Commit.new(self, line.strip) }
190
199
  end
191
200
 
192
201
  # Cleans the current repository of untracked files.
@@ -359,9 +368,9 @@ module RightGit::Git
359
368
  shell.send(
360
369
  shell_method,
361
370
  ['git', git_args].flatten.join(' '),
362
- :logger => logger,
363
371
  :directory => @repo_dir,
364
- :clear_env_vars => CLEAR_GIT_ENV_VARS)
372
+ :clear_env_vars => CLEAR_GIT_ENV_VARS,
373
+ :logger => logger)
365
374
  end
366
375
 
367
376
  end # Repository
@@ -27,7 +27,9 @@ module RightGit::Git
27
27
 
28
28
  # A tag in a Git repository.
29
29
  class Tag
30
- attr_reader :repo, :name
30
+ include ::RightGit::Git::BelongsToRepository
31
+
32
+ attr_reader :name
31
33
 
32
34
  class TagError < GitError; end
33
35
 
@@ -44,11 +46,15 @@ module RightGit::Git
44
46
  @name = name
45
47
  end
46
48
 
47
- # @return [String] stringized
49
+ # @return [String] the tag's name
48
50
  def to_s
49
- "#{self.class.name}: #{@name.inspect}"
51
+ name
52
+ end
53
+
54
+ # @return [String] info about this Ruby object
55
+ def inspect
56
+ "#<#{self.class.name}:#{name.inspect}>"
50
57
  end
51
- alias inspect to_s
52
58
 
53
59
  # @param [Tag] other
54
60
  # @return [TrueClass|FalseClass] true if equivalent
data/lib/right_git/git.rb CHANGED
@@ -26,11 +26,13 @@ require 'right_git'
26
26
  module RightGit
27
27
  module Git
28
28
  class GitError < RightGitError; end
29
-
30
- autoload :Branch, 'right_git/git/branch'
31
- autoload :BranchCollection, 'right_git/git/branch_collection'
32
- autoload :Commit, 'right_git/git/commit'
33
- autoload :Repository, 'right_git/git/repository'
34
- autoload :Tag, 'right_git/git/tag'
35
29
  end
36
30
  end
31
+
32
+ # module contents
33
+ require 'right_git/git/belongs_to_repository'
34
+ require 'right_git/git/branch'
35
+ require 'right_git/git/branch_collection'
36
+ require 'right_git/git/commit'
37
+ require 'right_git/git/repository'
38
+ require 'right_git/git/tag'
@@ -24,7 +24,6 @@
24
24
  require 'right_git/shell'
25
25
 
26
26
  # local
27
- require 'logger'
28
27
  require 'stringio'
29
28
  require 'singleton'
30
29
 
@@ -33,33 +32,27 @@ module RightGit::Shell
33
32
  # Default shell singleton implementation.
34
33
  class Default
35
34
  include ::RightGit::Shell::Interface
36
- include ::Singleton
35
+ include ::RightSupport::Ruby::EasySingleton
37
36
 
38
- def self.respond_to?(*arguments)
39
- instance.respond_to?(*arguments) || super
40
- end
41
-
42
- def self.method_missing(method_sym, *arguments, &block)
43
- if instance.respond_to?(method_sym)
44
- instance.send(method_sym, *arguments, &block)
45
- else
46
- super
47
- end
37
+ # Delegates to the RightGit class logger.
38
+ def default_logger
39
+ ::RightGit::Git::Repository.logger
48
40
  end
49
41
 
50
42
  # Implements execute interface.
51
43
  def execute(cmd, options = {})
52
44
  options = {
53
45
  :directory => nil,
54
- :logger => nil,
55
46
  :outstream => nil,
56
47
  :raise_on_failure => true,
57
48
  :set_env_vars => nil,
58
49
  :clear_env_vars => nil,
50
+ :logger => default_logger
59
51
  }.merge(options)
60
- logger = options[:logger] || default_logger
61
52
  outstream = options[:outstream]
62
53
 
54
+ logger = options[:logger]
55
+
63
56
  # build execution block.
64
57
  exitstatus = nil
65
58
  executioner = lambda do
@@ -23,19 +23,18 @@
23
23
  # ancestor
24
24
  require 'right_git/shell'
25
25
 
26
- # local
27
- require 'logger'
28
-
29
26
  module RightGit::Shell
30
27
 
31
28
  # Interface for a shell intended to work with RightGit.
32
29
  module Interface
33
30
 
34
- # Provides a default logger object (overridable).
31
+ # Return a logger object to be used for logging if nothing else is passed in as an option.
32
+ #
33
+ # Must be overridden.
35
34
  #
36
- # @return [Logger] default logger for STDOUT
35
+ # @return [Logger]
37
36
  def default_logger
38
- @default_logger ||= ::Logger.new(STDOUT)
37
+ raise NotImplementedError
39
38
  end
40
39
 
41
40
  # Run the given command and print the output to stdout.
@@ -45,7 +44,6 @@ module RightGit::Shell
45
44
  # @param [String] cmd the shell command to run
46
45
  # @param [Hash] options for execution
47
46
  # @option options :directory [String] to use as working directory during command execution or nil
48
- # @option options :logger [Logger] logger for shell execution (default = STDOUT)
49
47
  # @option options :outstream [IO] output stream to receive STDOUT and STDERR from command (default = STDOUT)
50
48
  # @option options :raise_on_failure [TrueClass|FalseClass] if true, wil raise a RuntimeError if the command does not end successfully (default), false to ignore errors
51
49
  # @option options :set_env_vars [Hash] environment variables to set during execution (default = none set)
@@ -26,8 +26,9 @@ require 'right_git'
26
26
  module RightGit
27
27
  module Shell
28
28
  class ShellError < RightGitError; end
29
-
30
- autoload :Default, 'right_git/shell/default'
31
- autoload :Interface, 'right_git/shell/interface'
32
29
  end
33
30
  end
31
+
32
+ # Module contents
33
+ require 'right_git/shell/interface'
34
+ require 'right_git/shell/default'
data/right_git.gemspec CHANGED
@@ -4,19 +4,20 @@
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = "right_git"
8
- s.version = "0.0.3"
7
+ s.name = %q{right_git}
8
+ s.version = "0.1.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Tony Spataro", "Scott Messier"]
12
- s.date = "2013-12-20"
13
- s.description = "An assortment of git-related classes created by RightScale."
14
- s.email = "support@rightscale.com"
12
+ s.date = %q{2014-01-16}
13
+ s.description = %q{An assortment of git-related classes created by RightScale.}
14
+ s.email = %q{support@rightscale.com}
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE",
17
17
  "README.rdoc"
18
18
  ]
19
19
  s.files = [
20
+ ".rspec",
20
21
  "CHANGELOG.rdoc",
21
22
  "LICENSE",
22
23
  "README.rdoc",
@@ -24,6 +25,7 @@ Gem::Specification.new do |s|
24
25
  "VERSION",
25
26
  "lib/right_git.rb",
26
27
  "lib/right_git/git.rb",
28
+ "lib/right_git/git/belongs_to_repository.rb",
27
29
  "lib/right_git/git/branch.rb",
28
30
  "lib/right_git/git/branch_collection.rb",
29
31
  "lib/right_git/git/commit.rb",
@@ -34,25 +36,28 @@ Gem::Specification.new do |s|
34
36
  "lib/right_git/shell/interface.rb",
35
37
  "right_git.gemspec"
36
38
  ]
37
- s.homepage = "https://github.com/rightscale/right_git"
39
+ s.homepage = %q{https://github.com/rightscale/right_git}
38
40
  s.licenses = ["MIT"]
39
41
  s.require_paths = ["lib"]
40
- s.rubygems_version = "1.8.26"
41
- s.summary = "Reusable Git repository management code."
42
+ s.rubygems_version = %q{1.6.2}
43
+ s.summary = %q{Reusable Git repository management code.}
42
44
 
43
45
  if s.respond_to? :specification_version then
44
46
  s.specification_version = 3
45
47
 
46
48
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
49
+ s.add_runtime_dependency(%q<right_support>, ["< 3.0.0", ">= 2.8.10"])
47
50
  s.add_development_dependency(%q<rake>, ["< 0.10", ">= 0.8.7"])
48
51
  s.add_development_dependency(%q<jeweler>, ["~> 1.8.3"])
49
52
  s.add_development_dependency(%q<nokogiri>, ["= 1.5.6"])
50
53
  else
54
+ s.add_dependency(%q<right_support>, ["< 3.0.0", ">= 2.8.10"])
51
55
  s.add_dependency(%q<rake>, ["< 0.10", ">= 0.8.7"])
52
56
  s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
53
57
  s.add_dependency(%q<nokogiri>, ["= 1.5.6"])
54
58
  end
55
59
  else
60
+ s.add_dependency(%q<right_support>, ["< 3.0.0", ">= 2.8.10"])
56
61
  s.add_dependency(%q<rake>, ["< 0.10", ">= 0.8.7"])
57
62
  s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
58
63
  s.add_dependency(%q<nokogiri>, ["= 1.5.6"])
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: right_git
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
4
+ hash: 27
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
+ - 1
8
9
  - 0
9
- - 3
10
- version: 0.0.3
10
+ version: 0.1.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Tony Spataro
@@ -16,10 +16,36 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2013-12-20 00:00:00 Z
19
+ date: 2014-01-16 00:00:00 -08:00
20
+ default_executable:
20
21
  dependencies:
21
22
  - !ruby/object:Gem::Dependency
23
+ type: :runtime
22
24
  version_requirements: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - <
28
+ - !ruby/object:Gem::Version
29
+ hash: 7
30
+ segments:
31
+ - 3
32
+ - 0
33
+ - 0
34
+ version: 3.0.0
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ hash: 59
38
+ segments:
39
+ - 2
40
+ - 8
41
+ - 10
42
+ version: 2.8.10
43
+ prerelease: false
44
+ requirement: *id001
45
+ name: right_support
46
+ - !ruby/object:Gem::Dependency
47
+ type: :development
48
+ version_requirements: &id002 !ruby/object:Gem::Requirement
23
49
  none: false
24
50
  requirements:
25
51
  - - <
@@ -37,12 +63,12 @@ dependencies:
37
63
  - 8
38
64
  - 7
39
65
  version: 0.8.7
40
- name: rake
41
66
  prerelease: false
42
- type: :development
43
- requirement: *id001
67
+ requirement: *id002
68
+ name: rake
44
69
  - !ruby/object:Gem::Dependency
45
- version_requirements: &id002 !ruby/object:Gem::Requirement
70
+ type: :development
71
+ version_requirements: &id003 !ruby/object:Gem::Requirement
46
72
  none: false
47
73
  requirements:
48
74
  - - ~>
@@ -53,12 +79,12 @@ dependencies:
53
79
  - 8
54
80
  - 3
55
81
  version: 1.8.3
56
- name: jeweler
57
82
  prerelease: false
58
- type: :development
59
- requirement: *id002
83
+ requirement: *id003
84
+ name: jeweler
60
85
  - !ruby/object:Gem::Dependency
61
- version_requirements: &id003 !ruby/object:Gem::Requirement
86
+ type: :development
87
+ version_requirements: &id004 !ruby/object:Gem::Requirement
62
88
  none: false
63
89
  requirements:
64
90
  - - "="
@@ -69,10 +95,9 @@ dependencies:
69
95
  - 5
70
96
  - 6
71
97
  version: 1.5.6
72
- name: nokogiri
73
98
  prerelease: false
74
- type: :development
75
- requirement: *id003
99
+ requirement: *id004
100
+ name: nokogiri
76
101
  description: An assortment of git-related classes created by RightScale.
77
102
  email: support@rightscale.com
78
103
  executables: []
@@ -83,6 +108,7 @@ extra_rdoc_files:
83
108
  - LICENSE
84
109
  - README.rdoc
85
110
  files:
111
+ - .rspec
86
112
  - CHANGELOG.rdoc
87
113
  - LICENSE
88
114
  - README.rdoc
@@ -90,6 +116,7 @@ files:
90
116
  - VERSION
91
117
  - lib/right_git.rb
92
118
  - lib/right_git/git.rb
119
+ - lib/right_git/git/belongs_to_repository.rb
93
120
  - lib/right_git/git/branch.rb
94
121
  - lib/right_git/git/branch_collection.rb
95
122
  - lib/right_git/git/commit.rb
@@ -99,6 +126,7 @@ files:
99
126
  - lib/right_git/shell/default.rb
100
127
  - lib/right_git/shell/interface.rb
101
128
  - right_git.gemspec
129
+ has_rdoc: true
102
130
  homepage: https://github.com/rightscale/right_git
103
131
  licenses:
104
132
  - MIT
@@ -128,7 +156,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
128
156
  requirements: []
129
157
 
130
158
  rubyforge_project:
131
- rubygems_version: 1.8.26
159
+ rubygems_version: 1.6.2
132
160
  signing_key:
133
161
  specification_version: 3
134
162
  summary: Reusable Git repository management code.