git-review-notes 0.0.2

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.
data/.gitignore ADDED
@@ -0,0 +1,5 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
5
+ /tmp/*
data/Gemfile ADDED
@@ -0,0 +1,9 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in git-review-branch.gemspec
4
+ gemspec
5
+
6
+ group :development do
7
+ gem 'libnotify'
8
+ gem 'rb-inotify'
9
+ end
data/Guardfile ADDED
@@ -0,0 +1,7 @@
1
+ guard 'cucumber', :cli => '--format pretty', :rvm => ['1.8.7', '1.9.3'] do
2
+ watch(%r{^features/.+\.feature$})
3
+ watch(%r{^features/support/.+\.rb$}) { 'features' }
4
+ watch(%r{\.rb$}) { 'features' }
5
+ watch(%r{bin/git-review-branch$}) { 'features' }
6
+ watch(%r{^features/step_definitions/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'features' }
7
+ end
data/README.md ADDED
@@ -0,0 +1,20 @@
1
+ # git-review
2
+
3
+
4
+ A git command to add notes with tag 'Reviewed-By: Reviewer \<reviewer@example.com\>'.
5
+
6
+ ## Setup
7
+
8
+ gem install git-review
9
+
10
+ ## Usage
11
+
12
+ There is two way to use it. First is to mark all commits from current branch as
13
+ reviewed.
14
+
15
+ git checkout branchname
16
+ git review
17
+
18
+ Second way is to mark commits individually.
19
+
20
+ git review HEAD~1 62ffa0a5
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
data/bin/git-review ADDED
@@ -0,0 +1,6 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require 'rubygems'
4
+ require 'git_review/cli'
5
+
6
+ ARGV.any? ? GitReview::CLI.start : GitReview::CLI.new.review
@@ -0,0 +1,19 @@
1
+ Feature: Adding 'Reviewed-By:' note for reviewed commits
2
+
3
+ To have some formal way to see that particular git commits was reviewed by a developer
4
+ we need some tool that allows us to easily add a git note for each reviewed commit.
5
+
6
+ Scenario: Review a branch
7
+ When I run `git checkout branch-for-review`
8
+ And I run `git log`
9
+ Then the output should not contain "Reviewed-By:"
10
+ When I run `git review`
11
+ Then the output should contain "Reviewed-By: Reviewer <reviewer@example.com>"
12
+ And the output should contain "2 commits are marked as reviewed by you."
13
+
14
+ Scenario: Mark already merged commits
15
+ When I run `git log`
16
+ Then the output should not contain "Reviewed-By:"
17
+ When I run `git review commits HEAD HEAD~1`
18
+ Then the output should contain "Reviewed-By: Reviewer <reviewer@example.com>"
19
+ And the output should contain "2 commits are marked as reviewed by you."
@@ -0,0 +1,7 @@
1
+ Given /^I am on "([^\"]*)" branch$/ do |arg1|
2
+
3
+ end
4
+
5
+ When /^I issue "([^\"]*)"$/ do |arg1|
6
+ pending # express the regexp above with the code you wish you had
7
+ end
@@ -0,0 +1,5 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ Bundler.setup
4
+
5
+ require 'aruba/cucumber'
@@ -0,0 +1,35 @@
1
+ require 'active_support/core_ext/kernel/reporting'
2
+
3
+ Before do
4
+ setup_sample_repository
5
+ end
6
+
7
+ def setup_sample_repository
8
+ silence_stream(STDERR) do
9
+ silence_stream(STDOUT) do
10
+ system <<-SHELL
11
+ rm -rf tmp/aruba
12
+ mkdir tmp/aruba
13
+ cd tmp/aruba
14
+ git init
15
+ git config --add user.name Reviewer
16
+ git config --add user.email reviewer@example.com
17
+ touch README
18
+ git add README
19
+ git commit -m 'first commit.'
20
+ touch Gemfile
21
+ git add Gemfile
22
+ git commit -m 'second commit.'
23
+ git branch branch-for-review
24
+ git checkout branch-for-review
25
+ touch file1
26
+ git add file1
27
+ git commit -m 'commit 1 in branch-for-review.'
28
+ touch file2
29
+ git add file2
30
+ git commit -m 'commit 2 in branch-for-review.'
31
+ git checkout master
32
+ SHELL
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,32 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "git_review/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "git-review-notes"
7
+ s.version = GitReview::VERSION
8
+ s.authors = ["Aleksei Gusev"]
9
+ s.email = ["aleksei.gusev@gmail.com"]
10
+ s.homepage = ""
11
+ s.summary = "Adds git review command."
12
+ s.description = <<-DSC
13
+ git review will add note for each commit in current branch
14
+ with 'Reviewed-By: Reviewer <reviewer@example.com>.'
15
+
16
+ git review commits HEAD~1 648dbac marks individual commits as reviewed.
17
+ DSC
18
+
19
+ s.rubyforge_project = "git-review-notes"
20
+
21
+ s.files = `git ls-files`.split("\n")
22
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
23
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
24
+ s.require_paths = ["lib"]
25
+
26
+ s.add_runtime_dependency 'git'
27
+ s.add_runtime_dependency 'thor'
28
+ s.add_development_dependency "cucumber"
29
+ s.add_development_dependency "aruba", "= 0.4.6"
30
+ s.add_development_dependency "guard-cucumber"
31
+ s.add_development_dependency "active_support"
32
+ end
@@ -0,0 +1,56 @@
1
+ require 'thor'
2
+ require 'git_review'
3
+
4
+ module GitReview
5
+ class CLI < Thor
6
+ desc "review", "Add note with Reviewed-By: for each commit in current branch."
7
+ def review
8
+ raise "Current branch is master. Exiting..." if git.current_branch == 'master'
9
+
10
+ current_branch_commits = git.log.between("master", git.current_branch)
11
+ add_reviewed_by(current_branch_commits)
12
+ push_refs_notes
13
+
14
+ system "git log master..#{git.current_branch}"
15
+ display_report(current_branch_commits)
16
+ end
17
+
18
+ desc "commits", "Add not with Reviewed-By: for specified commits separated by space."
19
+ def commits(*commits_shas)
20
+ commits = commits_shas.map {|sha| git.object(sha)}
21
+ add_reviewed_by(commits)
22
+ push_refs_notes
23
+
24
+ system "git log"
25
+ display_report(commits)
26
+ end
27
+
28
+
29
+ private
30
+
31
+ def add_reviewed_by(commits)
32
+ commits.each do |commit|
33
+ note = "".tap do |msg|
34
+ msg << 'Reviewed-By: '
35
+ msg << "#{git.config('user.name')} <#{git.config('user.email')}>"
36
+ end
37
+
38
+ git.lib.add_note(commit, note)
39
+ end
40
+ end
41
+
42
+ def push_refs_notes
43
+ system "git push origin refs/notes/*"
44
+ end
45
+
46
+ def display_report(commits)
47
+ puts
48
+ say "#{commits.size} commits are marked as reviewed by you.", :green
49
+ end
50
+
51
+ def git
52
+ # @git ||= Git.open(".", :log => Logger.new(STDOUT))
53
+ @git ||= Git.open(".")
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,11 @@
1
+ require 'git'
2
+
3
+ module GitReview
4
+ module GitLibExt
5
+ def add_note(commit, note)
6
+ command('notes add -f', ["-m", note, commit.sha])
7
+ end
8
+ end
9
+ end
10
+
11
+ Git::Lib.send(:include, GitReview::GitLibExt)
@@ -0,0 +1,16 @@
1
+ require 'git/lib'
2
+
3
+ # https://github.com/schacon/ruby-git/pull/35
4
+ class Git::Lib
5
+ def config_get(name)
6
+ do_get = lambda do |path|
7
+ command('config', ['--get', name])
8
+ end
9
+
10
+ if @git_dir
11
+ Dir.chdir(@git_dir, &do_get)
12
+ else
13
+ build_list.call
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,3 @@
1
+ module GitReview
2
+ VERSION = "0.0.2"
3
+ end
data/lib/git_review.rb ADDED
@@ -0,0 +1,6 @@
1
+ require "git_review/version"
2
+ require 'git_review/git_ext'
3
+ require 'git_review/git_lib_fix_19'
4
+
5
+ module GitReview
6
+ end
data/tmp/.gitkeep ADDED
File without changes
metadata ADDED
@@ -0,0 +1,131 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: git-review-notes
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Aleksei Gusev
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-11-22 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: git
16
+ requirement: &7424420 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *7424420
25
+ - !ruby/object:Gem::Dependency
26
+ name: thor
27
+ requirement: &7423740 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *7423740
36
+ - !ruby/object:Gem::Dependency
37
+ name: cucumber
38
+ requirement: &7422680 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *7422680
47
+ - !ruby/object:Gem::Dependency
48
+ name: aruba
49
+ requirement: &7438920 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - =
53
+ - !ruby/object:Gem::Version
54
+ version: 0.4.6
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: *7438920
58
+ - !ruby/object:Gem::Dependency
59
+ name: guard-cucumber
60
+ requirement: &7435920 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *7435920
69
+ - !ruby/object:Gem::Dependency
70
+ name: active_support
71
+ requirement: &7434960 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *7434960
80
+ description: ! " git review will add note for each commit in current branch\n with
81
+ 'Reviewed-By: Reviewer <reviewer@example.com>.'\n\n git review commits HEAD~1
82
+ 648dbac marks individual commits as reviewed.\n"
83
+ email:
84
+ - aleksei.gusev@gmail.com
85
+ executables:
86
+ - git-review
87
+ extensions: []
88
+ extra_rdoc_files: []
89
+ files:
90
+ - .gitignore
91
+ - Gemfile
92
+ - Guardfile
93
+ - README.md
94
+ - Rakefile
95
+ - bin/git-review
96
+ - features/git-review.feature
97
+ - features/step_definitions/git-review_steps.rb
98
+ - features/support/env.rb
99
+ - features/support/setup_sample_repository.rb
100
+ - git-review.gemspec
101
+ - lib/git_review.rb
102
+ - lib/git_review/cli.rb
103
+ - lib/git_review/git_ext.rb
104
+ - lib/git_review/git_lib_fix_19.rb
105
+ - lib/git_review/version.rb
106
+ - tmp/.gitkeep
107
+ homepage: ''
108
+ licenses: []
109
+ post_install_message:
110
+ rdoc_options: []
111
+ require_paths:
112
+ - lib
113
+ required_ruby_version: !ruby/object:Gem::Requirement
114
+ none: false
115
+ requirements:
116
+ - - ! '>='
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ required_rubygems_version: !ruby/object:Gem::Requirement
120
+ none: false
121
+ requirements:
122
+ - - ! '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ requirements: []
126
+ rubyforge_project: git-review-notes
127
+ rubygems_version: 1.8.10
128
+ signing_key:
129
+ specification_version: 3
130
+ summary: Adds git review command.
131
+ test_files: []