git-helpers 0.2.1 → 0.3.0
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.
- checksums.yaml +4 -4
- data/README.md +8 -0
- data/exe/git-browse +28 -0
- data/lib/git/helpers/browse.rb +24 -0
- data/lib/git/helpers/utils.rb +23 -0
- data/lib/git/helpers/version.rb +1 -1
- data/lib/git/helpers.rb +1 -0
- metadata +4 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4981c208c8a78f9d127ae0eadb4d094aa5d22527
|
4
|
+
data.tar.gz: d68a8861b6012bb68104ed6f51b68ff32c0ac876
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 003a486979b01520f36627e2441d4f0c5e2a75ddd016776265bdc3c2e85ac4f886817130f5fe83b9edbd477dc0fc22abb8fc07b17d595c5854c50d76452edcbd
|
7
|
+
data.tar.gz: 3f9100bb1444f1cfbdb0477edc42b3a7833ec88cf5401cc42f8ecba58a7ff57cc53d25efa449bb35e4ebc87d8f6c5898baf150cbdf81df8dc0663679700ec620
|
data/README.md
CHANGED
@@ -22,6 +22,14 @@ Running `git update` will pull down the latest changes for your current branch
|
|
22
22
|
from the upstream remote (or origin if you don't have an upstream), and pushes
|
23
23
|
the changes to your origin (or not at all if it was pulled from origin).
|
24
24
|
|
25
|
+
### Browse
|
26
|
+
Running `git browse` will open the current repo in your web browser to the repository
|
27
|
+
page at the current working branch. You can specify the remote if you wish to
|
28
|
+
browse a different one in the format `git browse [remote]`. If you wish to view a
|
29
|
+
specific branch/tag/commit then you can specify the tree after `remote` in the
|
30
|
+
format `git browse [remote] [tree]`.
|
31
|
+
*Note: To use a commit as a tree you must use the full commit hash*
|
32
|
+
|
25
33
|
## Development
|
26
34
|
|
27
35
|
After checking out the repo, run `bundle` to install dependencies. Then, run `bundle exec rake spec` to run the tests.
|
data/exe/git-browse
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'git/helpers'
|
3
|
+
require 'optparse'
|
4
|
+
|
5
|
+
OptionParser.new do |opts|
|
6
|
+
opts.banner = "Git-Helpers git browse\n"\
|
7
|
+
"Opens the default browser to the optionally specified remote (default 'origin'), at the optional branch/tree/commit\n"\
|
8
|
+
'Usage: git browse [remote] [branch/tree/commit]'
|
9
|
+
opts.on_tail '-h', '--help', 'Shows this help message' do
|
10
|
+
puts opts
|
11
|
+
exit 0
|
12
|
+
end
|
13
|
+
opts.on_tail '-v', '--version', 'Shows the version of git-helpers' do
|
14
|
+
puts "Git-Helpers version #{Git::Helpers::VERSION}"
|
15
|
+
exit 0
|
16
|
+
end
|
17
|
+
end.parse!
|
18
|
+
|
19
|
+
remote = ARGV.shift unless ARGV.empty?
|
20
|
+
tree = ARGV.shift unless ARGV.empty?
|
21
|
+
|
22
|
+
if remote.nil?
|
23
|
+
Git::Helpers.browse
|
24
|
+
elsif tree.nil?
|
25
|
+
Git::Helpers.browse Dir.pwd, remote
|
26
|
+
else
|
27
|
+
Git::Helpers.browse Dir.pwd, remote, tree
|
28
|
+
end
|
@@ -0,0 +1,24 @@
|
|
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 the specified repositorys page based on
|
9
|
+
# the the specified remote, and tree
|
10
|
+
# @param repo_dir [String] Directory of the git repo to browse, defaults to current working dir
|
11
|
+
# @param remote_name [String] Name of the remote to browse, defaults to origin
|
12
|
+
# @param tree [String] Tree to browse, can be a branch name, tag, or commit hash
|
13
|
+
def self.browse(repo_dir = Dir.pwd, remote_name = 'origin', tree = nil)
|
14
|
+
repo = Git.open(repo_dir)
|
15
|
+
raise "#{remote_name} is not a known remote" unless Utils.remote? repo, remote_name
|
16
|
+
remote = Utils.remotes_hash(repo)[remote_name]
|
17
|
+
tree ||= repo.current_branch
|
18
|
+
url = remote.url.chomp('.git')
|
19
|
+
url = Utils.transform_url(url)
|
20
|
+
url << "/tree/#{tree}"
|
21
|
+
Launchy.open url
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/lib/git/helpers/utils.rb
CHANGED
@@ -10,6 +10,29 @@ module Git
|
|
10
10
|
def self.remote?(repo, remote)
|
11
11
|
repo.remotes.map(&:name).include?(remote)
|
12
12
|
end
|
13
|
+
|
14
|
+
# Get a hash of remotes keyed to their name
|
15
|
+
# @param repo [Git::Base] Repository to get the remotes for
|
16
|
+
# @return [Hash{String => Git::Remote}] A hash of remotes
|
17
|
+
def self.remotes_hash(repo)
|
18
|
+
Hash[repo.remotes.map { |r| [r.name, r] }]
|
19
|
+
end
|
20
|
+
|
21
|
+
# Takes a url from a git remote and transforms it into an normal url with
|
22
|
+
# the desired scheme
|
23
|
+
# @param url [String] Url to transform
|
24
|
+
# @param scheme [String] What scheme the transformed Url will use, https (default), or http
|
25
|
+
# @return [String] A transformed Url
|
26
|
+
def self.transform_url(url, scheme = 'https')
|
27
|
+
# if git ssh url
|
28
|
+
if /^git@/ === url
|
29
|
+
url.gsub(/^git@(.*):/, scheme + '://\1/')
|
30
|
+
elsif %r{^git://} === url
|
31
|
+
url.gsub(/^git/, scheme)
|
32
|
+
else
|
33
|
+
url
|
34
|
+
end
|
35
|
+
end
|
13
36
|
end
|
14
37
|
end
|
15
38
|
end
|
data/lib/git/helpers/version.rb
CHANGED
data/lib/git/helpers.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: git-helpers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kierran McPherson
|
@@ -156,6 +156,7 @@ description: |2
|
|
156
156
|
email:
|
157
157
|
- kierranm@gmail.com
|
158
158
|
executables:
|
159
|
+
- git-browse
|
159
160
|
- git-update
|
160
161
|
extensions: []
|
161
162
|
extra_rdoc_files: []
|
@@ -168,9 +169,11 @@ files:
|
|
168
169
|
- LICENSE.txt
|
169
170
|
- README.md
|
170
171
|
- Rakefile
|
172
|
+
- exe/git-browse
|
171
173
|
- exe/git-update
|
172
174
|
- git-helpers.gemspec
|
173
175
|
- lib/git/helpers.rb
|
176
|
+
- lib/git/helpers/browse.rb
|
174
177
|
- lib/git/helpers/update.rb
|
175
178
|
- lib/git/helpers/utils.rb
|
176
179
|
- lib/git/helpers/version.rb
|