git-whence 0.3.0 → 0.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8469e43011173ed18cdd8b1d51709b6436286037806fb88e923901ff2c6a7123
4
- data.tar.gz: c5e5821f09e4019e5aa23c66a2b4c76160c5219e69cb3fb506119348caaaaf48
3
+ metadata.gz: d905ac8083db64392216de76354c9f4fdf082ec37654e6d17a5355c2d616091e
4
+ data.tar.gz: 80bcec14ef080aecc1b8ad0db28ba44d9eb273ce890cbd75e7bc76d21fac17f9
5
5
  SHA512:
6
- metadata.gz: 3b184b3804d3f0adc3c8c909dc62bd5a77d3d9565b25dd65bb397f3333ab4fec834e767caa0e3389c5c500a9f9bd7fe4872808d25db1efe833ae4ee06b0e5cd5
7
- data.tar.gz: 73e1238e7a961cdad0e4558d5d2fd8579d5e54f0dc2c2b044b5d1db4b3e3a73493e7bfbd3afa27013b6ba3f77a0453fff1bf02b6c706a5629783c5a801940e73
6
+ metadata.gz: 0d3626ddbb2c37530b32f152809ac02675f816df2457e1c339af15da06a0c87a75a1d67b7f2ca6820769eb55c286cee7385881ae92182b06772fe1f0aba8325e
7
+ data.tar.gz: a35ab59affb9244aed513371ad3ebdc2b0c9b29c060dd945b1d801a7578b18d19f8d4d0c89957e670587f60a6118d2074ad62d374097fd5c87cc5818226d03ee
@@ -1,5 +1,5 @@
1
1
  module Git
2
2
  module Whence
3
- VERSION = "0.3.0"
3
+ VERSION = "0.4.0"
4
4
  end
5
5
  end
data/lib/git/whence.rb CHANGED
@@ -4,6 +4,7 @@ require "optparse"
4
4
  module Git::Whence
5
5
  module CLI
6
6
  SQUASH_REGEX = /\(#(\d+)\)$/
7
+ DEFAULT_BRANCHES = ["main", "master"]
7
8
 
8
9
  class << self
9
10
  def run(argv)
@@ -66,8 +67,8 @@ module Git::Whence
66
67
  def find_merge(commit)
67
68
  merge_commit, merge = (
68
69
  find_merge_simple(commit, "HEAD") ||
69
- find_merge_simple(commit, "master") ||
70
- find_merge_fuzzy(commit, "master")
70
+ find_merge_simple(commit, default_branch) ||
71
+ find_merge_fuzzy(commit, default_branch)
71
72
  )
72
73
 
73
74
  if merge && merge_include_commit?(merge, merge_commit)
@@ -83,11 +84,29 @@ module Git::Whence
83
84
  end
84
85
 
85
86
  def find_merge_fuzzy(commit, branch)
86
- if similar = find_similar(commit, branch)
87
+ if (similar = find_similar(commit, branch))
87
88
  find_merge_simple(similar, branch)
88
89
  end
89
90
  end
90
91
 
92
+ def default_branch
93
+ @default_branch ||= remote_default_branch || local_default_branch
94
+ end
95
+
96
+ def remote_default_branch
97
+ remotes = sh("git remote").split("\n")
98
+ return nil if remotes.empty?
99
+ preferred = (remotes.include?("origin") ? "origin" : remotes.first)
100
+ folder = ".git/refs/remotes/#{preferred}"
101
+ (Dir["#{folder}/*"].map { |f| f.sub("#{folder}/", "") } & DEFAULT_BRANCHES).sort.first
102
+ end
103
+
104
+ # guess default branch by last changed commonly used default branch or current branch
105
+ def local_default_branch
106
+ branches = sh("git branch --sort=-committerdate").split("\n").map { |br| br.split(" ").last }
107
+ (branches & DEFAULT_BRANCHES).first || sh("git symbolic-ref HEAD").strip.sub("refs/heads/", "")
108
+ end
109
+
91
110
  def find_squash_merge(commit)
92
111
  commit if sh("git show -s --format='%s' #{commit}") =~ SQUASH_REGEX
93
112
  end
@@ -98,7 +117,7 @@ module Git::Whence
98
117
  time = time.to_i
99
118
  same = sh("git log #{branch} --pretty=format:'%H %an %s' --before #{time + month} --after #{time - month}")
100
119
  found = same.split("\n").map { |x| x.split(" ", 2) }.detect { |_, message| message == search }
101
- found && found.first
120
+ found&.first
102
121
  end
103
122
 
104
123
  def find_merge_simple(commit, branch)
metadata CHANGED
@@ -1,16 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: git-whence
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
  - Michael Grosser
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-06-14 00:00:00.000000000 Z
11
+ date: 2024-07-02 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description:
13
+ description:
14
14
  email: michael@grosser.it
15
15
  executables:
16
16
  - git-whence
@@ -25,7 +25,7 @@ homepage: https://github.com/grosser/git-whence
25
25
  licenses:
26
26
  - MIT
27
27
  metadata: {}
28
- post_install_message:
28
+ post_install_message:
29
29
  rdoc_options: []
30
30
  require_paths:
31
31
  - lib
@@ -33,15 +33,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
33
33
  requirements:
34
34
  - - ">="
35
35
  - !ruby/object:Gem::Version
36
- version: '0'
36
+ version: '2.3'
37
37
  required_rubygems_version: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - ">="
40
40
  - !ruby/object:Gem::Version
41
41
  version: '0'
42
42
  requirements: []
43
- rubygems_version: 3.0.3
44
- signing_key:
43
+ rubygems_version: 3.4.10
44
+ signing_key:
45
45
  specification_version: 4
46
46
  summary: Find the merge and pull request a commit came from + find cherry-picks
47
47
  test_files: []