git-whence 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/lib/git/whence.rb +17 -8
- data/lib/git/whence/version.rb +1 -1
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8469e43011173ed18cdd8b1d51709b6436286037806fb88e923901ff2c6a7123
|
4
|
+
data.tar.gz: c5e5821f09e4019e5aa23c66a2b4c76160c5219e69cb3fb506119348caaaaf48
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3b184b3804d3f0adc3c8c909dc62bd5a77d3d9565b25dd65bb397f3333ab4fec834e767caa0e3389c5c500a9f9bd7fe4872808d25db1efe833ae4ee06b0e5cd5
|
7
|
+
data.tar.gz: 73e1238e7a961cdad0e4558d5d2fd8579d5e54f0dc2c2b044b5d1db4b3e3a73493e7bfbd3afa27013b6ba3f77a0453fff1bf02b6c706a5629783c5a801940e73
|
data/lib/git/whence.rb
CHANGED
@@ -3,6 +3,8 @@ require "optparse"
|
|
3
3
|
|
4
4
|
module Git::Whence
|
5
5
|
module CLI
|
6
|
+
SQUASH_REGEX = /\(#(\d+)\)$/
|
7
|
+
|
6
8
|
class << self
|
7
9
|
def run(argv)
|
8
10
|
options = parse_options(argv)
|
@@ -19,8 +21,7 @@ module Git::Whence
|
|
19
21
|
show_commit(commit, options)
|
20
22
|
1
|
21
23
|
else
|
22
|
-
merge = find_merge(commit)
|
23
|
-
if merge
|
24
|
+
if merge = find_merge(commit)
|
24
25
|
show_commit(merge, options)
|
25
26
|
0
|
26
27
|
else
|
@@ -44,7 +45,7 @@ module Git::Whence
|
|
44
45
|
def show_commit(merge, options)
|
45
46
|
info = sh("git show -s --oneline #{merge}").strip
|
46
47
|
if options[:open]
|
47
|
-
if pr = info[/Merge pull request #(\d+) from /, 1]
|
48
|
+
if pr = info[/Merge pull request #(\d+) from /, 1] || info[SQUASH_REGEX, 1]
|
48
49
|
exec "open", "https://github.com/#{origin}/pull/#{pr}"
|
49
50
|
else
|
50
51
|
warn "Unable to find PR number in #{info}"
|
@@ -57,19 +58,23 @@ module Git::Whence
|
|
57
58
|
|
58
59
|
# https://github.com/foo/bar or git@github.com:foo/bar.git -> foo/bar
|
59
60
|
def origin
|
60
|
-
repo = sh("git remote get-url origin").strip
|
61
|
+
repo = sh("git remote get-url origin").strip # TODO: read file instead
|
61
62
|
repo.sub!(/\.git$/, "")
|
62
63
|
repo.split(/[:\/]/).last(2).join("/")
|
63
64
|
end
|
64
65
|
|
65
66
|
def find_merge(commit)
|
66
|
-
|
67
|
+
merge_commit, merge = (
|
67
68
|
find_merge_simple(commit, "HEAD") ||
|
68
69
|
find_merge_simple(commit, "master") ||
|
69
70
|
find_merge_fuzzy(commit, "master")
|
70
71
|
)
|
71
72
|
|
72
|
-
|
73
|
+
if merge && merge_include_commit?(merge, merge_commit)
|
74
|
+
merge
|
75
|
+
else
|
76
|
+
find_squash_merge(commit) # not very exact, so do this last ... ideally ask github api
|
77
|
+
end
|
73
78
|
end
|
74
79
|
|
75
80
|
def merge_include_commit?(merge, commit)
|
@@ -83,6 +88,10 @@ module Git::Whence
|
|
83
88
|
end
|
84
89
|
end
|
85
90
|
|
91
|
+
def find_squash_merge(commit)
|
92
|
+
commit if sh("git show -s --format='%s' #{commit}") =~ SQUASH_REGEX
|
93
|
+
end
|
94
|
+
|
86
95
|
def find_similar(commit, branch)
|
87
96
|
month = 30 * 24 * 60 * 60
|
88
97
|
time, search = sh("git show -s --format='%ct %an %s' #{commit}").strip.split(" ", 2)
|
@@ -93,8 +102,8 @@ module Git::Whence
|
|
93
102
|
end
|
94
103
|
|
95
104
|
def find_merge_simple(commit, branch)
|
96
|
-
result = sh
|
97
|
-
[commit, result
|
105
|
+
result = sh("git log #{commit}..#{branch} --ancestry-path --merges --pretty='%H' 2>/dev/null | tail -n 1").chomp
|
106
|
+
[commit, result] unless result.empty?
|
98
107
|
end
|
99
108
|
|
100
109
|
def sh(command)
|
data/lib/git/whence/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: git-whence
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Grosser
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-06-14 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description:
|
14
14
|
email: michael@grosser.it
|
@@ -40,8 +40,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
version: '0'
|
42
42
|
requirements: []
|
43
|
-
|
44
|
-
rubygems_version: 2.7.6
|
43
|
+
rubygems_version: 3.0.3
|
45
44
|
signing_key:
|
46
45
|
specification_version: 4
|
47
46
|
summary: Find the merge and pull request a commit came from + find cherry-picks
|