git-helpers 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4981c208c8a78f9d127ae0eadb4d094aa5d22527
4
- data.tar.gz: d68a8861b6012bb68104ed6f51b68ff32c0ac876
3
+ metadata.gz: 3c3aae4c9f77059eeb841e6a6342a9292616c3c5
4
+ data.tar.gz: 41804526c500c86e32371b84ec35754300abc2a6
5
5
  SHA512:
6
- metadata.gz: 003a486979b01520f36627e2441d4f0c5e2a75ddd016776265bdc3c2e85ac4f886817130f5fe83b9edbd477dc0fc22abb8fc07b17d595c5854c50d76452edcbd
7
- data.tar.gz: 3f9100bb1444f1cfbdb0477edc42b3a7833ec88cf5401cc42f8ecba58a7ff57cc53d25efa449bb35e4ebc87d8f6c5898baf150cbdf81df8dc0663679700ec620
6
+ metadata.gz: c89be32c4173474ed8c978f2212be9b4b1e55c1c7803fc2612790831e8ca1270c108c13ff46b3cfcd9348532fab8a541db948ad48786235609e5305f03281e42
7
+ data.tar.gz: bd3fc87c14083b2322c2c7c57c53218d7c25ee656681983a0f751c2eeda9e2f121b8720330a375f1d9abc7c0180ee4a413d62c443c7b00253f0c2e9b2a1b902f
data/README.md CHANGED
@@ -28,7 +28,18 @@ page at the current working branch. You can specify the remote if you wish to
28
28
  browse a different one in the format `git browse [remote]`. If you wish to view a
29
29
  specific branch/tag/commit then you can specify the tree after `remote` in the
30
30
  format `git browse [remote] [tree]`.
31
- *Note: To use a commit as a tree you must use the full commit hash*
31
+ *Note: To use a commit as a tree you must use the full commit hash*
32
+
33
+ ### PR (Pull Request)
34
+ Running `git pr` or one of its other forms will open a new pull request window
35
+ in your default web browser.
36
+ *Note: only works on GitHub remotes currently*
37
+
38
+ Forms:
39
+ * `git pr` - Opens the comparison between upstream and origin for the current branch
40
+ * `git pr target_remote` - Opens the comparison between `target_remote` and origin for the current branch
41
+ * `git pr target_remote target_branch` - Opens the comparison between `target_remote` at the `target_branch` and origin at the current branch
42
+ * `git pr target_remote/target_branch source_remote/source_branch` - Opens the comparison between `target_remote` at the `target_branch` and `source_remote` at the `source_branch`
32
43
 
33
44
  ## Development
34
45
 
data/exe/git-pr ADDED
@@ -0,0 +1,40 @@
1
+ #!/usr/bin/env ruby
2
+ require 'git/helpers'
3
+ require 'optparse'
4
+
5
+ OptionParser.new do |opts|
6
+ opts.banner = "Git-Helpers git pr\n"\
7
+ "Opens the default browser to a pull request creation window (only works for Github currently)\n"\
8
+ "Usages: git pr\n"\
9
+ " git pr target_remote\n"\
10
+ " git pr target_remote target_branch\n"\
11
+ ' git pr target_remote/target_branch source_remote/source_branch'
12
+ opts.on_tail '-h', '--help', 'Shows this help message' do
13
+ puts opts
14
+ exit 0
15
+ end
16
+ opts.on_tail '-v', '--version', 'Shows the version of git-helpers' do
17
+ puts "Git-Helpers version #{Git::Helpers::VERSION}"
18
+ exit 0
19
+ end
20
+ end.parse!
21
+
22
+ target = ARGV.shift unless ARGV.empty?
23
+ source = ARGV.shift unless ARGV.empty?
24
+
25
+ if target.nil?
26
+ Git::Helpers.pull_request
27
+ else
28
+ target_remote, target_branch = Git::Helpers::Utils.split_remote_string(target)
29
+ if source.nil?
30
+ Git::Helpers.pull_request Dir.pwd, target_remote, target_branch
31
+ else
32
+ source_remote, source_branch = Git::Helpers::Utils.split_remote_string(source)
33
+ if target_branch.nil?
34
+ Git::Helpers.pull_request Dir.pwd, target_remote, source_remote
35
+ else
36
+ Git::Helpers.pull_request Dir.pwd, target_remote, target_branch, source_remote, source_branch
37
+
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,28 @@
1
+ require 'git/helpers/utils'
2
+ module Git
3
+ # Provides a set of helper functions to make Git life easier
4
+ module Helpers
5
+ require 'git'
6
+ require 'launchy'
7
+
8
+ # Opens the default web browser to an comparison page to open a pull request
9
+ # @param repo_dir [String] Directory of the git repo to browse, defaults to current working dir
10
+ # @param target_remote [String] Name of the target remote, default upstream
11
+ # @param target_branch [String] Name of the branch on the target remote to compare, defaults to current branch
12
+ # @param source_remote [String] Name of the source remote, default origin
13
+ # @param source_branch [String] Name of the branch on the source remote to compare, defaults to current branch
14
+ def self.pull_request(repo_dir = Dir.pwd, target = 'upstream', target_branch = nil, source = 'origin', source_branch = nil)
15
+ repo = Git.open(repo_dir)
16
+ raise "#{target} is not a known remote" unless Utils.remote? repo, target
17
+ raise "#{source} is not a known remote" unless Utils.remote? repo, source
18
+ target_remote = Utils.remotes_hash(repo)[target]
19
+ source_remote = Utils.remotes_hash(repo)[source]
20
+ target_branch ||= repo.current_branch
21
+ source_branch ||= repo.current_branch
22
+ url = target_remote.url.chomp('.git')
23
+ url = Utils.transform_url(url)
24
+ url << "/compare/#{target_branch}...#{Utils.true_name(source_remote)}:#{source_branch}?expand=1"
25
+ Launchy.open url
26
+ end
27
+ end
28
+ end
@@ -33,6 +33,26 @@ module Git
33
33
  url
34
34
  end
35
35
  end
36
+
37
+ # Splits a remote/branch string into its component parts
38
+ # @param str [String] String to split
39
+ # @return [Array<String>] remote, branch
40
+ def self.split_remote_string(str)
41
+ first_slash = str.index('/')
42
+ if first_slash.nil?
43
+ return str, nil
44
+ else
45
+ return str[0..first_slash-1], str[first_slash+1..-1]
46
+ end
47
+ end
48
+
49
+ # Gets the true name for a remote
50
+ # @param remote [Git::Remote] The remote to get the true name for
51
+ # @return [String] The true name of the remote, pulled from the url
52
+ def self.true_name(remote)
53
+ transform_url(remote.url) =~ %r{^https://.*?/(.*?)/.*$}
54
+ Regexp.last_match 1
55
+ end
36
56
  end
37
57
  end
38
58
  end
@@ -1,5 +1,5 @@
1
1
  module Git
2
2
  module Helpers
3
- VERSION = '0.3.0'.freeze
3
+ VERSION = '0.4.0'.freeze
4
4
  end
5
5
  end
data/lib/git/helpers.rb CHANGED
@@ -1,3 +1,5 @@
1
1
  require 'git/helpers/version'
2
+ require 'git/helpers/utils'
2
3
  require 'git/helpers/update'
3
4
  require 'git/helpers/browse'
5
+ require 'git/helpers/pull_request'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: git-helpers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kierran McPherson
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-03-12 00:00:00.000000000 Z
11
+ date: 2016-03-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: launchy
@@ -157,6 +157,7 @@ email:
157
157
  - kierranm@gmail.com
158
158
  executables:
159
159
  - git-browse
160
+ - git-pr
160
161
  - git-update
161
162
  extensions: []
162
163
  extra_rdoc_files: []
@@ -170,10 +171,12 @@ files:
170
171
  - README.md
171
172
  - Rakefile
172
173
  - exe/git-browse
174
+ - exe/git-pr
173
175
  - exe/git-update
174
176
  - git-helpers.gemspec
175
177
  - lib/git/helpers.rb
176
178
  - lib/git/helpers/browse.rb
179
+ - lib/git/helpers/pull_request.rb
177
180
  - lib/git/helpers/update.rb
178
181
  - lib/git/helpers/utils.rb
179
182
  - lib/git/helpers/version.rb