git 1.19.1 → 5.5.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.
Files changed (265) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +5 -1
  3. data/AI_POLICY.md +24 -0
  4. data/CHANGELOG.md +689 -0
  5. data/CODE_OF_CONDUCT.md +25 -0
  6. data/CONTRIBUTING.md +1175 -97
  7. data/GOVERNANCE.md +106 -0
  8. data/LICENSE +1 -1
  9. data/MAINTAINERS.md +17 -4
  10. data/README.md +476 -320
  11. data/UPGRADING.md +1138 -0
  12. data/git.gemspec +124 -36
  13. data/lib/git/author.rb +39 -7
  14. data/lib/git/author_info.rb +66 -0
  15. data/lib/git/branch.rb +615 -65
  16. data/lib/git/branch_delete_failure.rb +34 -0
  17. data/lib/git/branch_delete_result.rb +66 -0
  18. data/lib/git/branch_info.rb +237 -0
  19. data/lib/git/branches.rb +167 -44
  20. data/lib/git/command_line/base.rb +247 -0
  21. data/lib/git/command_line/capturing.rb +308 -0
  22. data/lib/git/command_line/result.rb +88 -0
  23. data/lib/git/command_line/streaming.rb +236 -0
  24. data/lib/git/command_line.rb +52 -0
  25. data/lib/git/commands/add.rb +139 -0
  26. data/lib/git/commands/am/abort.rb +43 -0
  27. data/lib/git/commands/am/apply.rb +263 -0
  28. data/lib/git/commands/am/continue.rb +43 -0
  29. data/lib/git/commands/am/quit.rb +43 -0
  30. data/lib/git/commands/am/retry.rb +49 -0
  31. data/lib/git/commands/am/show_current_patch.rb +64 -0
  32. data/lib/git/commands/am/skip.rb +42 -0
  33. data/lib/git/commands/am.rb +33 -0
  34. data/lib/git/commands/apply.rb +242 -0
  35. data/lib/git/commands/archive/list_formats.rb +46 -0
  36. data/lib/git/commands/archive.rb +145 -0
  37. data/lib/git/commands/arguments.rb +4521 -0
  38. data/lib/git/commands/base.rb +502 -0
  39. data/lib/git/commands/branch/copy.rb +102 -0
  40. data/lib/git/commands/branch/create.rb +177 -0
  41. data/lib/git/commands/branch/delete.rb +88 -0
  42. data/lib/git/commands/branch/list.rb +178 -0
  43. data/lib/git/commands/branch/move.rb +102 -0
  44. data/lib/git/commands/branch/set_upstream.rb +86 -0
  45. data/lib/git/commands/branch/show_current.rb +49 -0
  46. data/lib/git/commands/branch/unset_upstream.rb +53 -0
  47. data/lib/git/commands/branch.rb +34 -0
  48. data/lib/git/commands/cat_file/batch.rb +385 -0
  49. data/lib/git/commands/cat_file/filtered.rb +105 -0
  50. data/lib/git/commands/cat_file/raw.rb +271 -0
  51. data/lib/git/commands/cat_file.rb +49 -0
  52. data/lib/git/commands/checkout/branch.rb +153 -0
  53. data/lib/git/commands/checkout/files.rb +116 -0
  54. data/lib/git/commands/checkout.rb +38 -0
  55. data/lib/git/commands/checkout_index.rb +106 -0
  56. data/lib/git/commands/clean.rb +102 -0
  57. data/lib/git/commands/clone.rb +241 -0
  58. data/lib/git/commands/commit.rb +273 -0
  59. data/lib/git/commands/commit_tree.rb +101 -0
  60. data/lib/git/commands/config_option_syntax/add.rb +86 -0
  61. data/lib/git/commands/config_option_syntax/get.rb +121 -0
  62. data/lib/git/commands/config_option_syntax/get_all.rb +118 -0
  63. data/lib/git/commands/config_option_syntax/get_color.rb +95 -0
  64. data/lib/git/commands/config_option_syntax/get_color_bool.rb +96 -0
  65. data/lib/git/commands/config_option_syntax/get_regexp.rb +119 -0
  66. data/lib/git/commands/config_option_syntax/get_urlmatch.rb +111 -0
  67. data/lib/git/commands/config_option_syntax/list.rb +111 -0
  68. data/lib/git/commands/config_option_syntax/remove_section.rb +79 -0
  69. data/lib/git/commands/config_option_syntax/rename_section.rb +83 -0
  70. data/lib/git/commands/config_option_syntax/replace_all.rb +109 -0
  71. data/lib/git/commands/config_option_syntax/set.rb +119 -0
  72. data/lib/git/commands/config_option_syntax/unset.rb +92 -0
  73. data/lib/git/commands/config_option_syntax/unset_all.rb +94 -0
  74. data/lib/git/commands/config_option_syntax.rb +56 -0
  75. data/lib/git/commands/describe.rb +156 -0
  76. data/lib/git/commands/diff.rb +657 -0
  77. data/lib/git/commands/diff_files.rb +519 -0
  78. data/lib/git/commands/diff_index.rb +499 -0
  79. data/lib/git/commands/fetch.rb +354 -0
  80. data/lib/git/commands/fsck.rb +138 -0
  81. data/lib/git/commands/gc.rb +134 -0
  82. data/lib/git/commands/grep.rb +339 -0
  83. data/lib/git/commands/init.rb +101 -0
  84. data/lib/git/commands/log.rb +634 -0
  85. data/lib/git/commands/ls_files.rb +195 -0
  86. data/lib/git/commands/ls_remote.rb +161 -0
  87. data/lib/git/commands/ls_tree.rb +135 -0
  88. data/lib/git/commands/maintenance/register.rb +77 -0
  89. data/lib/git/commands/maintenance/run.rb +109 -0
  90. data/lib/git/commands/maintenance/start.rb +71 -0
  91. data/lib/git/commands/maintenance/stop.rb +60 -0
  92. data/lib/git/commands/maintenance/unregister.rb +84 -0
  93. data/lib/git/commands/maintenance.rb +31 -0
  94. data/lib/git/commands/merge/abort.rb +44 -0
  95. data/lib/git/commands/merge/continue.rb +44 -0
  96. data/lib/git/commands/merge/quit.rb +46 -0
  97. data/lib/git/commands/merge/start.rb +250 -0
  98. data/lib/git/commands/merge.rb +28 -0
  99. data/lib/git/commands/merge_base.rb +91 -0
  100. data/lib/git/commands/mv.rb +82 -0
  101. data/lib/git/commands/name_rev.rb +119 -0
  102. data/lib/git/commands/pull.rb +382 -0
  103. data/lib/git/commands/push.rb +251 -0
  104. data/lib/git/commands/read_tree.rb +154 -0
  105. data/lib/git/commands/remote/add.rb +96 -0
  106. data/lib/git/commands/remote/get_url.rb +68 -0
  107. data/lib/git/commands/remote/list.rb +56 -0
  108. data/lib/git/commands/remote/prune.rb +63 -0
  109. data/lib/git/commands/remote/remove.rb +52 -0
  110. data/lib/git/commands/remote/rename.rb +76 -0
  111. data/lib/git/commands/remote/set_branches.rb +70 -0
  112. data/lib/git/commands/remote/set_head.rb +89 -0
  113. data/lib/git/commands/remote/set_url.rb +78 -0
  114. data/lib/git/commands/remote/set_url_add.rb +70 -0
  115. data/lib/git/commands/remote/set_url_delete.rb +71 -0
  116. data/lib/git/commands/remote/show.rb +77 -0
  117. data/lib/git/commands/remote/update.rb +79 -0
  118. data/lib/git/commands/remote.rb +42 -0
  119. data/lib/git/commands/repack.rb +281 -0
  120. data/lib/git/commands/reset.rb +154 -0
  121. data/lib/git/commands/rev_parse.rb +304 -0
  122. data/lib/git/commands/revert/abort.rb +45 -0
  123. data/lib/git/commands/revert/continue.rb +62 -0
  124. data/lib/git/commands/revert/quit.rb +47 -0
  125. data/lib/git/commands/revert/skip.rb +44 -0
  126. data/lib/git/commands/revert/start.rb +158 -0
  127. data/lib/git/commands/revert.rb +29 -0
  128. data/lib/git/commands/rm.rb +113 -0
  129. data/lib/git/commands/show.rb +632 -0
  130. data/lib/git/commands/show_ref/exclude_existing.rb +119 -0
  131. data/lib/git/commands/show_ref/exists.rb +80 -0
  132. data/lib/git/commands/show_ref/list.rb +149 -0
  133. data/lib/git/commands/show_ref/verify.rb +122 -0
  134. data/lib/git/commands/show_ref.rb +42 -0
  135. data/lib/git/commands/stash/apply.rb +81 -0
  136. data/lib/git/commands/stash/branch.rb +67 -0
  137. data/lib/git/commands/stash/clear.rb +43 -0
  138. data/lib/git/commands/stash/create.rb +60 -0
  139. data/lib/git/commands/stash/drop.rb +73 -0
  140. data/lib/git/commands/stash/list.rb +43 -0
  141. data/lib/git/commands/stash/pop.rb +87 -0
  142. data/lib/git/commands/stash/push.rb +112 -0
  143. data/lib/git/commands/stash/show.rb +158 -0
  144. data/lib/git/commands/stash/store.rb +72 -0
  145. data/lib/git/commands/stash.rb +38 -0
  146. data/lib/git/commands/status.rb +174 -0
  147. data/lib/git/commands/symbolic_ref/delete.rb +72 -0
  148. data/lib/git/commands/symbolic_ref/read.rb +99 -0
  149. data/lib/git/commands/symbolic_ref/update.rb +79 -0
  150. data/lib/git/commands/symbolic_ref.rb +38 -0
  151. data/lib/git/commands/tag/create.rb +142 -0
  152. data/lib/git/commands/tag/delete.rb +57 -0
  153. data/lib/git/commands/tag/list.rb +146 -0
  154. data/lib/git/commands/tag/verify.rb +71 -0
  155. data/lib/git/commands/tag.rb +26 -0
  156. data/lib/git/commands/update_ref/batch.rb +145 -0
  157. data/lib/git/commands/update_ref/delete.rb +90 -0
  158. data/lib/git/commands/update_ref/update.rb +103 -0
  159. data/lib/git/commands/update_ref.rb +42 -0
  160. data/lib/git/commands/version.rb +60 -0
  161. data/lib/git/commands/worktree/add.rb +139 -0
  162. data/lib/git/commands/worktree/list.rb +64 -0
  163. data/lib/git/commands/worktree/lock.rb +58 -0
  164. data/lib/git/commands/worktree/management_base.rb +51 -0
  165. data/lib/git/commands/worktree/move.rb +66 -0
  166. data/lib/git/commands/worktree/prune.rb +67 -0
  167. data/lib/git/commands/worktree/remove.rb +63 -0
  168. data/lib/git/commands/worktree/repair.rb +76 -0
  169. data/lib/git/commands/worktree/unlock.rb +47 -0
  170. data/lib/git/commands/worktree.rb +43 -0
  171. data/lib/git/commands/write_tree.rb +68 -0
  172. data/lib/git/commands.rb +88 -0
  173. data/lib/git/config.rb +72 -5
  174. data/lib/git/config_entry_info.rb +106 -0
  175. data/lib/git/configuring.rb +795 -0
  176. data/lib/git/detached_head_info.rb +57 -0
  177. data/lib/git/diff.rb +437 -86
  178. data/lib/git/diff_file_numstat_info.rb +31 -0
  179. data/lib/git/diff_file_patch_info.rb +136 -0
  180. data/lib/git/diff_file_raw_info.rb +129 -0
  181. data/lib/git/diff_info.rb +162 -0
  182. data/lib/git/diff_path_status.rb +107 -0
  183. data/lib/git/diff_result.rb +34 -0
  184. data/lib/git/diff_stats.rb +111 -0
  185. data/lib/git/dirstat_info.rb +102 -0
  186. data/lib/git/encoding_utils.rb +32 -1
  187. data/lib/git/errors.rb +285 -0
  188. data/lib/git/escaped_path.rb +57 -5
  189. data/lib/git/execution_context/global.rb +31 -0
  190. data/lib/git/execution_context/repository.rb +151 -0
  191. data/lib/git/execution_context.rb +559 -0
  192. data/lib/git/factories.rb +813 -0
  193. data/lib/git/file_ref.rb +77 -0
  194. data/lib/git/fsck_object.rb +56 -0
  195. data/lib/git/fsck_result.rb +132 -0
  196. data/lib/git/log.rb +306 -90
  197. data/lib/git/object.rb +563 -141
  198. data/lib/git/parsers/branch.rb +240 -0
  199. data/lib/git/parsers/cat_file.rb +111 -0
  200. data/lib/git/parsers/config_entry.rb +110 -0
  201. data/lib/git/parsers/diff.rb +792 -0
  202. data/lib/git/parsers/fsck.rb +144 -0
  203. data/lib/git/parsers/grep.rb +42 -0
  204. data/lib/git/parsers/ls_remote.rb +79 -0
  205. data/lib/git/parsers/ls_tree.rb +58 -0
  206. data/lib/git/parsers/remote.rb +162 -0
  207. data/lib/git/parsers/stash.rb +292 -0
  208. data/lib/git/parsers/status.rb +251 -0
  209. data/lib/git/parsers/tag.rb +341 -0
  210. data/lib/git/parsers/worktree.rb +185 -0
  211. data/lib/git/path_resolver.rb +206 -0
  212. data/lib/git/remote.rb +165 -12
  213. data/lib/git/remote_info.rb +203 -0
  214. data/lib/git/repository/branching.rb +964 -0
  215. data/lib/git/repository/committing.rb +246 -0
  216. data/lib/git/repository/context_helpers.rb +293 -0
  217. data/lib/git/repository/diffing.rb +785 -0
  218. data/lib/git/repository/inspecting.rb +252 -0
  219. data/lib/git/repository/logging.rb +410 -0
  220. data/lib/git/repository/maintenance.rb +65 -0
  221. data/lib/git/repository/merging.rb +451 -0
  222. data/lib/git/repository/object_operations.rb +1551 -0
  223. data/lib/git/repository/remote_operations.rb +984 -0
  224. data/lib/git/repository/shared_private.rb +120 -0
  225. data/lib/git/repository/staging.rb +587 -0
  226. data/lib/git/repository/stashing.rb +623 -0
  227. data/lib/git/repository/status_operations.rb +249 -0
  228. data/lib/git/repository/worktree_operations.rb +339 -0
  229. data/lib/git/repository.rb +484 -2
  230. data/lib/git/stash.rb +109 -12
  231. data/lib/git/stash_info.rb +102 -0
  232. data/lib/git/stashes.rb +169 -26
  233. data/lib/git/status.rb +308 -122
  234. data/lib/git/status_file_info.rb +258 -0
  235. data/lib/git/status_info.rb +189 -0
  236. data/lib/git/tag_delete_failure.rb +34 -0
  237. data/lib/git/tag_delete_result.rb +66 -0
  238. data/lib/git/tag_info.rb +99 -0
  239. data/lib/git/url.rb +15 -8
  240. data/lib/git/version.rb +113 -2
  241. data/lib/git/version_constraint.rb +85 -0
  242. data/lib/git/worktree.rb +150 -8
  243. data/lib/git/worktree_info.rb +128 -0
  244. data/lib/git/worktrees.rb +118 -13
  245. data/lib/git.rb +632 -234
  246. metadata +369 -54
  247. data/.github/stale.yml +0 -25
  248. data/.github/workflows/continuous_integration.yml +0 -49
  249. data/.gitignore +0 -10
  250. data/Dockerfile.changelog-rs +0 -12
  251. data/Gemfile +0 -5
  252. data/ISSUE_TEMPLATE.md +0 -15
  253. data/PULL_REQUEST_TEMPLATE.md +0 -9
  254. data/RELEASING.md +0 -70
  255. data/Rakefile +0 -60
  256. data/lib/git/base/factory.rb +0 -99
  257. data/lib/git/base.rb +0 -711
  258. data/lib/git/command_line_result.rb +0 -86
  259. data/lib/git/failed_error.rb +0 -53
  260. data/lib/git/git_execute_error.rb +0 -7
  261. data/lib/git/index.rb +0 -5
  262. data/lib/git/lib.rb +0 -1328
  263. data/lib/git/path.rb +0 -31
  264. data/lib/git/signaled_error.rb +0 -50
  265. data/lib/git/working_directory.rb +0 -4
@@ -0,0 +1,634 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'git/commands/base'
4
+
5
+ module Git
6
+ module Commands
7
+ # Implements the `git log` command.
8
+ #
9
+ # Returns commit history.
10
+ #
11
+ # @example Typical usage
12
+ # log = Git::Commands::Log.new(execution_context)
13
+ # log.call
14
+ # log.call(max_count: 20, since: '2 weeks ago')
15
+ # log.call('v1.0..v2.0', pretty: 'format:%H %s', path: ['lib/', 'spec/'])
16
+ # log.call(name_only: true, patch: true)
17
+ #
18
+ # @note `arguments` block audited against https://git-scm.com/docs/git-log/2.53.0
19
+ #
20
+ # @see https://git-scm.com/docs/git-log git-log documentation
21
+ #
22
+ # @see Git::Commands
23
+ #
24
+ # @api private
25
+ #
26
+ class Log < Git::Commands::Base # rubocop:disable Metrics/ClassLength
27
+ arguments do
28
+ literal 'log'
29
+
30
+ # Commit Limiting
31
+ value_option %i[max_count n], inline: true
32
+ value_option :skip, inline: true
33
+ value_option :since, inline: true
34
+ value_option :after, inline: true
35
+ value_option :since_as_filter, inline: true
36
+ value_option :until, inline: true
37
+ value_option :before, inline: true
38
+ value_option :author, inline: true
39
+ value_option :committer, inline: true
40
+ value_option :grep_reflog, inline: true
41
+ value_option :grep, inline: true
42
+ flag_option :all_match
43
+ flag_option :invert_grep
44
+ flag_option %i[regexp_ignore_case i]
45
+ flag_option :basic_regexp
46
+ flag_option %i[extended_regexp E]
47
+ flag_option %i[fixed_strings F]
48
+ flag_option %i[perl_regexp P]
49
+ flag_option :remove_empty
50
+ flag_option :merges, negatable: true
51
+ value_option :min_parents, inline: true
52
+ value_option :max_parents, inline: true
53
+ flag_option :first_parent
54
+ flag_option :exclude_first_parent_only
55
+ flag_option :all
56
+ flag_or_value_option :branches, inline: true
57
+ flag_or_value_option :tags, inline: true
58
+ flag_or_value_option :remotes, inline: true
59
+ value_option :glob, inline: true
60
+ value_option :exclude, inline: true
61
+ value_option :exclude_hidden, inline: true
62
+ flag_option :reflog
63
+ flag_option :alternate_refs
64
+ flag_option :single_worktree
65
+ flag_option :ignore_missing
66
+ flag_option :bisect
67
+ # --stdin excluded: requires stdin interaction (execution-model conflict)
68
+ flag_option :cherry_mark
69
+ flag_option :cherry_pick
70
+ flag_option :left_only
71
+ flag_option :right_only
72
+ flag_option :cherry
73
+ flag_option %i[walk_reflogs g]
74
+ flag_option :merge
75
+ flag_option :boundary
76
+
77
+ # History Simplification
78
+ flag_option :simplify_by_decoration
79
+ flag_option :show_pulls
80
+ flag_option :full_history
81
+ flag_option :dense
82
+ flag_option :sparse
83
+ flag_option :simplify_merges
84
+ flag_or_value_option :ancestry_path, inline: true
85
+
86
+ # Commit Ordering
87
+ flag_option :date_order
88
+ flag_option :author_date_order
89
+ flag_option :topo_order
90
+ flag_option :reverse
91
+
92
+ # Object Traversal
93
+ flag_or_value_option :no_walk, inline: true
94
+ flag_option :do_walk
95
+
96
+ # Commit Formatting
97
+ flag_or_value_option %i[pretty format], inline: true
98
+ flag_option :abbrev_commit, negatable: true
99
+ flag_option :oneline
100
+ value_option :encoding, inline: true
101
+ flag_or_value_option :expand_tabs, inline: true, negatable: true
102
+ flag_or_value_option :notes, inline: true, negatable: true
103
+ flag_option :show_notes_by_default
104
+ flag_option :show_signature
105
+ flag_option :relative_date
106
+ value_option :date, inline: true
107
+ flag_option :parents
108
+ flag_option :children
109
+ flag_option :left_right
110
+ flag_option :graph
111
+ flag_or_value_option :show_linear_break, inline: true
112
+ flag_option :follow
113
+ flag_or_value_option :decorate, inline: true, negatable: true
114
+ value_option :decorate_refs, inline: true
115
+ value_option :decorate_refs_exclude, inline: true
116
+ flag_option :clear_decorations
117
+ flag_option :source
118
+ flag_option :use_mailmap, negatable: true
119
+ flag_option :full_diff
120
+ flag_option :log_size
121
+
122
+ # Diff Formatting
123
+ flag_option %i[patch p]
124
+ flag_option %i[no_patch s]
125
+ value_option :diff_merges, inline: true
126
+ flag_option :no_diff_merges
127
+ flag_option :combined_all_paths
128
+ flag_option :raw
129
+ flag_or_value_option :stat, inline: true
130
+ flag_option :compact_summary
131
+ flag_option :numstat
132
+ flag_option :shortstat
133
+ flag_or_value_option :dirstat, inline: true
134
+ flag_option :summary
135
+ flag_option :name_only
136
+ flag_option :name_status
137
+ flag_or_value_option :submodule, inline: true
138
+ flag_or_value_option :color, inline: true, negatable: true
139
+ flag_option :full_index
140
+ flag_option :binary
141
+ flag_or_value_option :abbrev, inline: true
142
+ value_option :diff_filter, inline: true
143
+ flag_or_value_option :find_renames, inline: true
144
+ flag_or_value_option :find_copies, inline: true
145
+ flag_option :find_copies_harder
146
+ flag_or_value_option :relative, inline: true, negatable: true
147
+ flag_option :text
148
+ flag_option :ignore_space_at_eol
149
+ flag_option %i[ignore_space_change b]
150
+ flag_option %i[ignore_all_space w]
151
+ flag_option :ignore_blank_lines
152
+ value_option :ignore_matching_lines, inline: true
153
+ flag_option :ext_diff, negatable: true
154
+ flag_option :textconv, negatable: true
155
+ flag_option :no_prefix
156
+ value_option :src_prefix, inline: true
157
+ value_option :dst_prefix, inline: true
158
+
159
+ operand :revision_range, repeatable: true
160
+ end_of_options
161
+ value_option :path, as_operand: true, repeatable: true
162
+ execution_option :timeout
163
+ end
164
+
165
+ #
166
+ # @overload call(*revision_range, **options)
167
+ #
168
+ # Execute the `git log` command.
169
+ #
170
+ # @param revision_range [Array<String>] zero or more revision specifiers
171
+ #
172
+ # Examples include `'v1.0..v2.0'`, `'abc123'`, `'^v0.9'`, or any
173
+ # expression accepted by git-log(1). When multiple values are given they
174
+ # are passed as separate positional arguments to git. Defaults to no
175
+ # revision constraint (i.e. all reachable commits).
176
+ #
177
+ # @param options [Hash] command options
178
+ #
179
+ # ### Commit Limiting
180
+ #
181
+ # @option options [Integer, String] :max_count (nil) maximum number of commits to output
182
+ #
183
+ # Alias: `:n`
184
+ #
185
+ # @option options [Integer, String] :skip (nil) skip this many commits before starting output
186
+ #
187
+ # @option options [String] :since (nil) show commits more recent than the given date
188
+ #
189
+ # Examples: `'2 weeks ago'`, `'2024-01-01'`
190
+ #
191
+ # @option options [String] :after (nil) show commits more recent than the given date
192
+ # (synonym for `:since`)
193
+ #
194
+ # @option options [String] :since_as_filter (nil) like `:since` but visits all commits
195
+ # in the range rather than stopping at the first older commit
196
+ #
197
+ # @option options [String] :until (nil) show commits older than the given date
198
+ #
199
+ # Examples: `'1 month ago'`, `'2024-01-01'`
200
+ #
201
+ # @option options [String] :before (nil) show commits older than the given date
202
+ # (synonym for `:until`)
203
+ #
204
+ # @option options [String] :author (nil) limit commits to those whose author line
205
+ # matches the given pattern (regular expression)
206
+ #
207
+ # @option options [String] :committer (nil) limit commits to those whose committer
208
+ # line matches the given pattern (regular expression)
209
+ #
210
+ # @option options [String] :grep_reflog (nil) limit commits to those with reflog entries
211
+ # matching the given pattern; requires `:walk_reflogs`
212
+ #
213
+ # @option options [String] :grep (nil) limit commits to those whose log message matches
214
+ # the given pattern (regular expression)
215
+ #
216
+ # @option options [Boolean, nil] :all_match (nil) limit output to commits matching all
217
+ # `--grep` patterns (default: any)
218
+ #
219
+ # @option options [Boolean, nil] :invert_grep (nil) limit output to commits whose log
220
+ # message does **not** match the `:grep` pattern
221
+ #
222
+ # @option options [Boolean, nil] :regexp_ignore_case (nil) match `--grep`, `--author`,
223
+ # and `--committer` patterns case-insensitively
224
+ #
225
+ # Alias: `:i`
226
+ #
227
+ # @option options [Boolean, nil] :basic_regexp (nil) treat limiting patterns as basic POSIX
228
+ # regular expressions (this is the default behavior)
229
+ #
230
+ # @option options [Boolean, nil] :extended_regexp (nil) treat limiting patterns as extended
231
+ # POSIX regular expressions
232
+ #
233
+ # Mutually exclusive with `:fixed_strings` and `:perl_regexp`. Alias: `:E`
234
+ #
235
+ # @option options [Boolean, nil] :fixed_strings (nil) treat limiting patterns as fixed
236
+ # strings instead of regular expressions
237
+ #
238
+ # Mutually exclusive with `:extended_regexp` and `:perl_regexp`. Alias: `:F`
239
+ #
240
+ # @option options [Boolean, nil] :perl_regexp (nil) treat limiting patterns as
241
+ # Perl-compatible regular expressions
242
+ #
243
+ # Mutually exclusive with `:extended_regexp` and `:fixed_strings`. Alias: `:P`
244
+ #
245
+ # @option options [Boolean, nil] :remove_empty (nil) stop when a given path disappears
246
+ # from the tree
247
+ #
248
+ # @option options [Boolean, nil] :merges (nil) include only merge commits (`--merges`)
249
+ #
250
+ # Equivalent to `--min-parents=2`.
251
+ #
252
+ # @option options [Boolean, nil] :no_merges (nil) exclude merge commits (`--no-merges`)
253
+ #
254
+ # Equivalent to `--max-parents=1`.
255
+ #
256
+ # @option options [Integer, String] :min_parents (nil) show only commits with at least this
257
+ # many parents
258
+ #
259
+ # @option options [Integer, String] :max_parents (nil) show only commits with at most this
260
+ # many parents
261
+ #
262
+ # @option options [Boolean, nil] :first_parent (nil) follow only the first parent commit
263
+ # upon seeing a merge commit
264
+ #
265
+ # @option options [Boolean, nil] :exclude_first_parent_only (nil) when excluding commits
266
+ # with `^`, follow only the first parent of merge commits
267
+ #
268
+ # @option options [Boolean, nil] :all (nil) pretend as if all refs in `refs/`, along
269
+ # with `HEAD`, are listed on the command line
270
+ #
271
+ # @option options [Boolean, String, nil] :branches (nil) pretend as if all refs in
272
+ # `refs/heads` are listed on the command line
273
+ #
274
+ # Pass a shell glob pattern (e.g. `'feature*'`) to restrict to matching branch names
275
+ #
276
+ # @option options [Boolean, String, nil] :tags (nil) pretend as if all refs in
277
+ # `refs/tags` are listed on the command line
278
+ #
279
+ # Pass a shell glob pattern to restrict to matching tag names
280
+ #
281
+ # @option options [Boolean, String, nil] :remotes (nil) pretend as if all refs in
282
+ # `refs/remotes` are listed on the command line
283
+ #
284
+ # Pass a shell glob pattern to restrict to matching remote-tracking branches
285
+ #
286
+ # @option options [String] :glob (nil) pretend as if all refs matching the given shell
287
+ # glob pattern are listed on the command line
288
+ #
289
+ # @option options [String] :exclude (nil) do not include refs matching the given glob
290
+ # that `--all`, `--branches`, `--tags`, `--remotes`, or `--glob` would otherwise use
291
+ #
292
+ # @option options [String] :exclude_hidden (nil) do not include refs hidden by the given
293
+ # configuration; value is one of `fetch`, `receive`, or `uploadpack`
294
+ #
295
+ # @option options [Boolean, nil] :reflog (nil) pretend as if all objects mentioned by
296
+ # reflogs are listed on the command line
297
+ #
298
+ # @option options [Boolean, nil] :alternate_refs (nil) pretend as if all objects mentioned
299
+ # as ref tips of alternate repositories are listed on the command line
300
+ #
301
+ # @option options [Boolean, nil] :single_worktree (nil) examine only the current working
302
+ # tree when `--all`, `--reflog`, or similar options are in use
303
+ #
304
+ # @option options [Boolean, nil] :ignore_missing (nil) ignore invalid object names in input
305
+ #
306
+ # @option options [Boolean, nil] :bisect (nil) pretend as if the bad bisect ref was listed
307
+ # and the good bisect refs were excluded
308
+ #
309
+ # @option options [Boolean, nil] :cherry_mark (nil) like `:cherry_pick` but marks
310
+ # equivalent commits with `=` instead of omitting them; inequivalent ones with +++
311
+ #
312
+ # @option options [Boolean, nil] :cherry_pick (nil) omit commits that introduce the same
313
+ # change as a commit on the other side of a symmetric difference
314
+ #
315
+ # @option options [Boolean, nil] :left_only (nil) list only commits reachable from the
316
+ # left side of a symmetric difference
317
+ #
318
+ # @option options [Boolean, nil] :right_only (nil) list only commits reachable from the
319
+ # right side of a symmetric difference
320
+ #
321
+ # @option options [Boolean, nil] :cherry (nil) synonym for
322
+ # `--right-only --cherry-mark --no-merges`
323
+ #
324
+ # @option options [Boolean, nil] :walk_reflogs (nil) walk reflog entries from most recent
325
+ # to oldest instead of the commit ancestry chain
326
+ #
327
+ # Alias: `:g`
328
+ #
329
+ # @option options [Boolean, nil] :merge (nil) show commits touching conflicted paths in
330
+ # the range `HEAD...MERGE_HEAD`; only useful with unmerged index entries
331
+ #
332
+ # @option options [Boolean, nil] :boundary (nil) output excluded boundary commits,
333
+ # prefixed with `-`
334
+ #
335
+ # ### History Simplification
336
+ #
337
+ # @option options [Boolean, nil] :simplify_by_decoration (nil) show only commits referenced
338
+ # by some branch or tag
339
+ #
340
+ # @option options [Boolean, nil] :show_pulls (nil) include merge commits that are not
341
+ # TREESAME to their first parent but are TREESAME to a later parent
342
+ #
343
+ # @option options [Boolean, nil] :full_history (nil) do not prune history; show all commits
344
+ # that touched the given path(s)
345
+ #
346
+ # @option options [Boolean, nil] :dense (nil) show only commits not TREESAME to any parent
347
+ #
348
+ # @option options [Boolean, nil] :sparse (nil) show all commits in the simplified history
349
+ #
350
+ # @option options [Boolean, nil] :simplify_merges (nil) remove needless merges from the
351
+ # result of `:full_history` with parent rewriting
352
+ #
353
+ # @option options [Boolean, String, nil] :ancestry_path (nil) limit to commits on the
354
+ # ancestry chain between the range endpoints
355
+ #
356
+ # Pass `true` for `--ancestry-path`; pass a commit SHA for `--ancestry-path=<commit>`
357
+ #
358
+ # ### Commit Ordering
359
+ #
360
+ # @option options [Boolean, nil] :date_order (nil) show commits in commit timestamp order,
361
+ # no parents before all children
362
+ #
363
+ # @option options [Boolean, nil] :author_date_order (nil) like `:date_order` but ordered
364
+ # by author timestamp
365
+ #
366
+ # @option options [Boolean, nil] :topo_order (nil) avoid showing commits on multiple lines
367
+ # of history intermixed
368
+ #
369
+ # @option options [Boolean, nil] :reverse (nil) output selected commits in reverse order;
370
+ # cannot be combined with `:walk_reflogs`
371
+ #
372
+ # ### Object Traversal
373
+ #
374
+ # @option options [Boolean, String, nil] :no_walk (nil) show only the given commits without
375
+ # traversing ancestors
376
+ #
377
+ # Pass `true` for `--no-walk` (sorted); pass `"unsorted"` for `--no-walk=unsorted`
378
+ #
379
+ # @option options [Boolean, nil] :do_walk (nil) override a previous `--no-walk`
380
+ #
381
+ # ### Commit Formatting
382
+ #
383
+ # @option options [Boolean, String, nil] :pretty (nil) pretty-print commit log in a format
384
+ #
385
+ # Pass `true` for `--pretty` (`medium` format); pass a format name such as `"oneline"`,
386
+ # `"short"`, `"full"`, `"fuller"`, `"email"`, `"raw"`, or a `format:<string>`
387
+ # expression for `--pretty=<format>`.
388
+ #
389
+ # Alias: `:format`
390
+ #
391
+ # @option options [Boolean, nil] :abbrev_commit (nil) abbreviate commit hash (`--abbrev-commit`)
392
+ #
393
+ # @option options [Boolean, nil] :no_abbrev_commit (nil) do not abbreviate commit hash (`--no-abbrev-commit`)
394
+ #
395
+ # @option options [Boolean, nil] :oneline (nil) shorthand for
396
+ # `--pretty=oneline --abbrev-commit`
397
+ #
398
+ # @option options [String] :encoding (nil) re-encode the commit log message in the
399
+ # given character encoding before output
400
+ #
401
+ # @option options [Boolean, String, nil] :expand_tabs (nil) expand tabs in log messages (`--expand-tabs`)
402
+ #
403
+ # Pass `true` for `--expand-tabs` (width 8); pass an integer string like `"4"` for
404
+ # `--expand-tabs=<n>`
405
+ #
406
+ # @option options [Boolean, nil] :no_expand_tabs (nil) do not expand tabs in log messages (`--no-expand-tabs`)
407
+ #
408
+ # @option options [Boolean, String, nil] :notes (nil) show notes annotating the commit (`--notes`)
409
+ #
410
+ # Pass `true` for `--notes`; pass a ref string for `--notes=<ref>`
411
+ #
412
+ # @option options [Boolean, nil] :no_notes (nil) suppress notes output (`--no-notes`)
413
+ #
414
+ # @option options [Boolean, nil] :show_notes_by_default (nil) show the default notes unless
415
+ # options for displaying specific notes are given
416
+ #
417
+ # @option options [Boolean, nil] :show_signature (nil) verify a signed commit with
418
+ # `gpg --verify`
419
+ #
420
+ # @option options [Boolean, nil] :relative_date (nil) show dates relative to the current
421
+ # time (synonym for `--date=relative`)
422
+ #
423
+ # @option options [String] :date (nil) format for dates in human-readable output
424
+ #
425
+ # Examples: `'relative'`, `'iso'`, `'short'`, `'format:%Y-%m-%d'`
426
+ #
427
+ # @option options [Boolean, nil] :parents (nil) print the parents of each commit and
428
+ # enable parent rewriting
429
+ #
430
+ # @option options [Boolean, nil] :children (nil) print the children of each commit and
431
+ # enable parent rewriting
432
+ #
433
+ # @option options [Boolean, nil] :left_right (nil) mark which side of a symmetric
434
+ # difference a commit is reachable from (`<` for left, `>` for right)
435
+ #
436
+ # @option options [Boolean, nil] :graph (nil) draw a text-based graphical representation
437
+ # of the commit history on the left side of output; implies `--topo-order`
438
+ #
439
+ # @option options [Boolean, String, nil] :show_linear_break (nil) put a barrier between
440
+ # non-linear consecutive commits when `--graph` is not used
441
+ #
442
+ # Pass `true` for `--show-linear-break`; pass a string for a custom barrier text
443
+ #
444
+ # @option options [Boolean, nil] :follow (nil) continue listing the history of a file
445
+ # beyond renames; requires `:path` to be set to exactly one path element
446
+ #
447
+ # @option options [Boolean, String, nil] :decorate (nil) print ref names of commits shown (`--decorate`)
448
+ #
449
+ # Pass `true` for `--decorate` (short format); pass a string such as `"full"` for
450
+ # `--decorate=<format>`
451
+ #
452
+ # @option options [Boolean, nil] :no_decorate (nil) do not print ref names (`--no-decorate`)
453
+ #
454
+ # @option options [String] :decorate_refs (nil) use only refs matching this pattern
455
+ # for decorations
456
+ #
457
+ # @option options [String] :decorate_refs_exclude (nil) do not use refs matching this
458
+ # pattern for decorations
459
+ #
460
+ # @option options [Boolean, nil] :clear_decorations (nil) clear all previous
461
+ # `--decorate-refs` / `--decorate-refs-exclude` options
462
+ #
463
+ # @option options [Boolean, nil] :source (nil) print the ref name by which each commit
464
+ # was reached
465
+ #
466
+ # @option options [Boolean, nil] :use_mailmap (nil) use the mailmap file to map author/
467
+ # committer names and addresses to canonical real names (`--use-mailmap`)
468
+ #
469
+ # @option options [Boolean, nil] :no_use_mailmap (nil) disable mailmap substitution (`--no-use-mailmap`)
470
+ #
471
+ # @option options [Boolean, nil] :full_diff (nil) show full diff for commits touching the
472
+ # specified paths, not just the diff for those paths
473
+ #
474
+ # @option options [Boolean, nil] :log_size (nil) include a `log size <n>` line for each
475
+ # commit indicating the length of the commit message in bytes
476
+ #
477
+ # ### Diff Formatting
478
+ #
479
+ # @option options [Boolean, nil] :patch (nil) generate patch output
480
+ #
481
+ # Alias: `:p`
482
+ #
483
+ # @option options [Boolean, nil] :no_patch (nil) suppress all diff output
484
+ #
485
+ # Alias: `:s`
486
+ #
487
+ # @option options [String] :diff_merges (nil) diff format for merge commits
488
+ #
489
+ # Values: `"off"`, `"on"`, `"first-parent"`, `"separate"`, `"combined"`,
490
+ # `"dense-combined"`, `"remerge"`
491
+ #
492
+ # @option options [Boolean, nil] :no_diff_merges (nil) disable diff output for merge
493
+ # commits (synonym for `--diff-merges=off`)
494
+ #
495
+ # @option options [Boolean, nil] :combined_all_paths (nil) in combined diffs, list the
496
+ # file name from all parents; only meaningful with `-c` or `--cc`
497
+ #
498
+ # @option options [Boolean, nil] :raw (nil) show a summary of changes using the raw diff
499
+ # format for each commit
500
+ #
501
+ # @option options [Boolean, String, nil] :stat (nil) generate a diffstat
502
+ #
503
+ # Pass `true` for `--stat`; pass a string such as `"80,40"` for
504
+ # `--stat=<width>[,<name-width>[,<count>]]`
505
+ #
506
+ # @option options [Boolean, nil] :compact_summary (nil) output a condensed summary of
507
+ # extended header information in diffstat; implies `--stat`
508
+ #
509
+ # @option options [Boolean, nil] :numstat (nil) like `--stat` but shows numbers of added
510
+ # and deleted lines in decimal notation without abbreviation
511
+ #
512
+ # @option options [Boolean, nil] :shortstat (nil) output only the last line of the
513
+ # `--stat` format
514
+ #
515
+ # @option options [Boolean, String, nil] :dirstat (nil) output distribution of relative
516
+ # amount of changes per sub-directory
517
+ #
518
+ # Pass `true` for `--dirstat`; pass a parameter string such as `"files,10"` for
519
+ # `--dirstat=<params>`
520
+ #
521
+ # @option options [Boolean, nil] :summary (nil) output a condensed summary of extended
522
+ # header information such as creations, renames, and mode changes
523
+ #
524
+ # @option options [Boolean, nil] :name_only (nil) show only the names of changed files
525
+ #
526
+ # @option options [Boolean, nil] :name_status (nil) show only the names and status of
527
+ # changed files
528
+ #
529
+ # @option options [Boolean, String, nil] :submodule (nil) specify how differences in
530
+ # submodules are shown
531
+ #
532
+ # Pass `true` for `--submodule` (log format); pass `"short"`, `"log"`, or `"diff"`
533
+ # for `--submodule=<format>`
534
+ #
535
+ # @option options [Boolean, String, nil] :color (nil) show colored diff output (`--color`)
536
+ #
537
+ # Pass `true` for `--color`; pass a string such as `"always"` for `--color=<when>`
538
+ #
539
+ # @option options [Boolean, nil] :no_color (nil) suppress colored diff output (`--no-color`)
540
+ #
541
+ # @option options [Boolean, nil] :full_index (nil) show the full pre- and post-image blob
542
+ # object names on the index line of patch output
543
+ #
544
+ # @option options [Boolean, nil] :binary (nil) output a binary diff that can be applied
545
+ # with `git apply`; implies `--patch`
546
+ #
547
+ # @option options [Boolean, String, nil] :abbrev (nil) show the shortest unique object
548
+ # name prefix in diff-raw output
549
+ #
550
+ # Pass `true` for `--abbrev`; pass an integer string for `--abbrev=<n>`
551
+ #
552
+ # @option options [String] :diff_filter (nil) select files by status letter
553
+ # (e.g. `"AD"` for Added and Deleted)
554
+ #
555
+ # @option options [Boolean, String, nil] :find_renames (nil) detect renames
556
+ #
557
+ # Pass `true` for `--find-renames`; pass a percentage threshold string such as
558
+ # `"90"` for `--find-renames=<n>`
559
+ #
560
+ # @option options [Boolean, String, nil] :find_copies (nil) detect copies as well as
561
+ # renames
562
+ #
563
+ # Pass `true` for `--find-copies`; pass a threshold string for `--find-copies=<n>`
564
+ #
565
+ # @option options [Boolean, nil] :find_copies_harder (nil) inspect unmodified files as
566
+ # candidates for copy source; expensive for large projects
567
+ #
568
+ # @option options [Boolean, String, nil] :relative (nil) show pathnames relative to the
569
+ # given subdirectory, or the current directory when run from a subdirectory (`--relative`)
570
+ #
571
+ # Pass `true` for `--relative`; pass a path string for `--relative=<path>`
572
+ #
573
+ # @option options [Boolean, nil] :no_relative (nil) show absolute pathnames (`--no-relative`)
574
+ #
575
+ # @option options [Boolean, nil] :text (nil) treat all files as text; alias `-a`
576
+ #
577
+ # @option options [Boolean, nil] :ignore_space_at_eol (nil) ignore changes in whitespace
578
+ # at end of line
579
+ #
580
+ # @option options [Boolean, nil] :ignore_space_change (nil) ignore changes in amount of
581
+ # whitespace; alias `-b`
582
+ #
583
+ # @option options [Boolean, nil] :ignore_all_space (nil) ignore whitespace when comparing
584
+ # lines; alias `-w`
585
+ #
586
+ # @option options [Boolean, nil] :ignore_blank_lines (nil) ignore changes whose lines are
587
+ # all blank
588
+ #
589
+ # @option options [String] :ignore_matching_lines (nil) ignore changes whose all lines
590
+ # match the given regular expression
591
+ #
592
+ # @option options [Boolean, nil] :ext_diff (nil) allow external diff helpers (`--ext-diff`)
593
+ #
594
+ # @option options [Boolean, nil] :no_ext_diff (nil) disallow external diff helpers (`--no-ext-diff`)
595
+ #
596
+ # @option options [Boolean, nil] :textconv (nil) allow external text conversion filters
597
+ # when comparing binary files (`--textconv`)
598
+ #
599
+ # @option options [Boolean, nil] :no_textconv (nil) disallow external text conversion filters
600
+ # (`--no-textconv`)
601
+ #
602
+ # @option options [Boolean, nil] :no_prefix (nil) do not show any source or destination
603
+ # prefix
604
+ #
605
+ # @option options [String] :src_prefix (nil) show the given source prefix instead of
606
+ # `a/`
607
+ #
608
+ # @option options [String] :dst_prefix (nil) show the given destination prefix instead
609
+ # of `b/`
610
+ #
611
+ # ### Paths
612
+ #
613
+ # @option options [Array<String>] :path (nil) limit commits to those that affected the
614
+ # given paths
615
+ #
616
+ # ### Execution
617
+ #
618
+ # @option options [Integer, Float] :timeout (nil) number of seconds to wait before the
619
+ # command is aborted with a timeout error
620
+ #
621
+ # @return [Git::CommandLine::Result] the result of calling `git log`
622
+ #
623
+ # @raise [ArgumentError] if unsupported options are provided
624
+ #
625
+ # @raise [Git::FailedError] if git exits with a non-zero exit status
626
+ #
627
+ # @api public
628
+ #
629
+ def call(*, **)
630
+ super
631
+ end
632
+ end
633
+ end
634
+ end