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,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'git/commands/base'
4
+
5
+ module Git
6
+ module Commands
7
+ module Remote
8
+ # `git remote remove` command
9
+ #
10
+ # Removes a remote and its associated tracking refs and configuration.
11
+ #
12
+ # @example Remove a remote
13
+ # remove = Git::Commands::Remote::Remove.new(execution_context)
14
+ # remove.call('origin')
15
+ #
16
+ # @note No `end_of_options` boundary: `git remote remove` did not accept a `--`
17
+ # separator until git 2.38.0, so a name that looks like a flag (e.g. `-weird`)
18
+ # raises `ArgumentError` instead of being sent to git.
19
+ #
20
+ # @note `arguments` block audited against https://git-scm.com/docs/git-remote/2.53.0
21
+ #
22
+ # @see Git::Commands::Remote
23
+ #
24
+ # @see https://git-scm.com/docs/git-remote git-remote
25
+ #
26
+ # @api private
27
+ #
28
+ class Remove < Git::Commands::Base
29
+ arguments do
30
+ literal 'remote'
31
+ literal 'remove'
32
+
33
+ operand :name, required: true
34
+ end
35
+
36
+ # @!method call(*)
37
+ #
38
+ # @overload call(name)
39
+ #
40
+ # Execute the `git remote remove` command
41
+ #
42
+ # @param name [String] the remote name to remove
43
+ #
44
+ # @return [Git::CommandLine::Result] the result of calling `git remote remove`
45
+ #
46
+ # @raise [Git::FailedError] if git exits with a non-zero exit status
47
+ #
48
+ # @api public
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,76 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'git/commands/base'
4
+
5
+ module Git
6
+ module Commands
7
+ module Remote
8
+ # `git remote rename` command
9
+ #
10
+ # Renames a remote and updates all its remote-tracking branches and
11
+ # configuration settings.
12
+ #
13
+ # @example Rename a remote
14
+ # rename = Git::Commands::Remote::Rename.new(execution_context)
15
+ # rename.call('origin', 'upstream')
16
+ #
17
+ # @example Rename a remote with progress reporting
18
+ # rename = Git::Commands::Remote::Rename.new(execution_context)
19
+ # rename.call('origin', 'upstream', progress: true)
20
+ #
21
+ # @example Suppress progress output during rename
22
+ # rename = Git::Commands::Remote::Rename.new(execution_context)
23
+ # rename.call('origin', 'upstream', no_progress: true)
24
+ #
25
+ # @note No `end_of_options` boundary despite `:progress` preceding the operands:
26
+ # `git remote rename` did not accept a `--` separator until git 2.36.0. Since
27
+ # the `old`/`new` operands are still validated (an operand is rejected as
28
+ # option-like whenever no `--` boundary exists anywhere in the definition),
29
+ # a name that looks like a flag (e.g. `-weird`) raises `ArgumentError` instead
30
+ # of ever reaching git, so omitting the boundary introduces no ambiguity.
31
+ #
32
+ # @note `arguments` block audited against https://git-scm.com/docs/git-remote/2.53.0
33
+ #
34
+ # @see Git::Commands::Remote
35
+ #
36
+ # @see https://git-scm.com/docs/git-remote git-remote
37
+ #
38
+ # @api private
39
+ #
40
+ class Rename < Git::Commands::Base
41
+ arguments do
42
+ literal 'remote'
43
+ literal 'rename'
44
+ flag_option :progress, negatable: true
45
+
46
+ operand :old, required: true
47
+ operand :new, required: true
48
+ end
49
+
50
+ # @!method call(*)
51
+ #
52
+ # @overload call(old, new, **options)
53
+ #
54
+ # Execute the `git remote rename` command
55
+ #
56
+ # @param old [String] the current remote name
57
+ #
58
+ # @param new [String] the new remote name
59
+ #
60
+ # @param options [Hash] command options
61
+ #
62
+ # @option options [Boolean, nil] :progress (nil) enable progress reporting (`--progress`)
63
+ #
64
+ # @option options [Boolean, nil] :no_progress (nil) suppress progress output (`--no-progress`)
65
+ #
66
+ # @return [Git::CommandLine::Result] the result of calling `git remote rename`
67
+ #
68
+ # @raise [ArgumentError] if unsupported options are provided
69
+ #
70
+ # @raise [Git::FailedError] if git exits with a non-zero exit status
71
+ #
72
+ # @api public
73
+ end
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,70 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'git/commands/base'
4
+
5
+ module Git
6
+ module Commands
7
+ module Remote
8
+ # `git remote set-branches` command
9
+ #
10
+ # Changes the list of branches tracked for the named remote. This can be used
11
+ # to track a subset of the available remote branches after the initial setup.
12
+ #
13
+ # @example Set the tracked branches for a remote
14
+ # set_branches = Git::Commands::Remote::SetBranches.new(execution_context)
15
+ # set_branches.call('origin', 'main', 'develop')
16
+ #
17
+ # @example Append additional tracked branches without replacing existing ones
18
+ # set_branches = Git::Commands::Remote::SetBranches.new(execution_context)
19
+ # set_branches.call('origin', 'release/*', add: true)
20
+ #
21
+ # @note `arguments` block audited against https://git-scm.com/docs/git-remote/2.53.0
22
+ #
23
+ # @see Git::Commands::Remote
24
+ #
25
+ # @see https://git-scm.com/docs/git-remote git-remote
26
+ #
27
+ # @api private
28
+ #
29
+ class SetBranches < Git::Commands::Base
30
+ arguments do
31
+ literal 'remote'
32
+ literal 'set-branches'
33
+ flag_option :add
34
+
35
+ end_of_options
36
+
37
+ operand :name, required: true
38
+ operand :branch, repeatable: true, required: true
39
+ end
40
+
41
+ # @!method call(*, **options)
42
+ #
43
+ # @param options [Hash] command options
44
+ #
45
+ # @option options [Boolean, nil] :add (nil) command option key; see
46
+ # overload docs for the full option list
47
+ #
48
+ # @overload call(name, *branch, **options)
49
+ #
50
+ # Execute the `git remote set-branches` command
51
+ #
52
+ # @param name [String] the remote name to update
53
+ #
54
+ # @param branch [Array<String>] one or more branch names or glob patterns to track
55
+ #
56
+ # @param options [Hash] command options
57
+ #
58
+ # @option options [Boolean, nil] :add (nil) append the given branches instead of replacing them
59
+ #
60
+ # @return [Git::CommandLine::Result] the result of calling `git remote set-branches`
61
+ #
62
+ # @raise [ArgumentError] if unsupported options are provided
63
+ #
64
+ # @raise [Git::FailedError] if git exits with a non-zero exit status
65
+ #
66
+ # @api public
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,89 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'git/commands/base'
4
+
5
+ module Git
6
+ module Commands
7
+ module Remote
8
+ # `git remote set-head` command
9
+ #
10
+ # Sets or deletes the default branch (symbolic HEAD) for the named remote.
11
+ #
12
+ # @example Set the remote HEAD to a specific branch
13
+ # set_head = Git::Commands::Remote::SetHead.new(execution_context)
14
+ # set_head.call('origin', 'main')
15
+ #
16
+ # @example Auto-detect the remote HEAD by querying the remote
17
+ # set_head = Git::Commands::Remote::SetHead.new(execution_context)
18
+ # set_head.call('origin', auto: true)
19
+ #
20
+ # @example Delete the remote HEAD symbolic ref
21
+ # set_head = Git::Commands::Remote::SetHead.new(execution_context)
22
+ # set_head.call('origin', delete: true)
23
+ #
24
+ # @note `arguments` block audited against https://git-scm.com/docs/git-remote/2.53.0
25
+ #
26
+ # @see Git::Commands::Remote
27
+ #
28
+ # @see https://git-scm.com/docs/git-remote git-remote
29
+ #
30
+ # @api private
31
+ #
32
+ class SetHead < Git::Commands::Base
33
+ arguments do
34
+ literal 'remote'
35
+ literal 'set-head'
36
+ operand :name, required: true
37
+ flag_option %i[auto a]
38
+ flag_option %i[delete d]
39
+ operand :branch
40
+ end
41
+
42
+ # @!method call(*, **options)
43
+ #
44
+ # @param options [Hash] command options
45
+ #
46
+ # @option options [Boolean, nil] :auto (nil) command option key; see
47
+ # overload docs for the full option list
48
+ #
49
+ # @overload call(name, branch)
50
+ #
51
+ # Set the remote's HEAD symbolic ref to a specific branch
52
+ #
53
+ # @param name [String] the remote name to update
54
+ #
55
+ # @param branch [String] the branch to set as the remote HEAD
56
+ #
57
+ # @return [Git::CommandLine::Result] the result of calling `git remote set-head`
58
+ #
59
+ # @raise [Git::FailedError] if git exits with a non-zero exit status
60
+ #
61
+ # @api public
62
+ #
63
+ # @overload call(name, **options)
64
+ #
65
+ # Detect or delete the remote's HEAD symbolic ref
66
+ #
67
+ # @param name [String] the remote name to update
68
+ #
69
+ # @param options [Hash] command options
70
+ #
71
+ # @option options [Boolean, nil] :auto (nil) detect the remote HEAD by querying the remote
72
+ #
73
+ # Mutually exclusive with `:delete`. Alias: :a
74
+ #
75
+ # @option options [Boolean, nil] :delete (nil) delete the configured remote HEAD symbolic ref
76
+ #
77
+ # Mutually exclusive with `:auto`. Alias: :d
78
+ #
79
+ # @return [Git::CommandLine::Result] the result of calling `git remote set-head`
80
+ #
81
+ # @raise [ArgumentError] if unsupported options are provided
82
+ #
83
+ # @raise [Git::FailedError] if git exits with a non-zero exit status
84
+ #
85
+ # @api public
86
+ end
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,78 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'git/commands/base'
4
+
5
+ module Git
6
+ module Commands
7
+ module Remote
8
+ # `git remote set-url` command
9
+ #
10
+ # Replaces a URL in the named remote's configuration. Sets the first URL
11
+ # for the remote matching regex <oldurl> (or the first URL if no <oldurl>
12
+ # is given) to <newurl>.
13
+ #
14
+ # @example Replace the fetch URL for a remote
15
+ # set_url = Git::Commands::Remote::SetUrl.new(execution_context)
16
+ # set_url.call('origin', 'https://example.com/repo.git')
17
+ #
18
+ # @example Replace the push URL for a remote
19
+ # set_url = Git::Commands::Remote::SetUrl.new(execution_context)
20
+ # set_url.call('origin', 'https://example.com/repo.git', push: true)
21
+ #
22
+ # @example Replace a URL matching a regex
23
+ # set_url = Git::Commands::Remote::SetUrl.new(execution_context)
24
+ # set_url.call('origin', 'https://new.example.com/repo.git', 'old.example.com')
25
+ #
26
+ # @note `arguments` block audited against https://git-scm.com/docs/git-remote/2.53.0
27
+ #
28
+ # @see Git::Commands::Remote
29
+ #
30
+ # @see https://git-scm.com/docs/git-remote git-remote
31
+ #
32
+ # @api private
33
+ #
34
+ class SetUrl < Git::Commands::Base
35
+ arguments do
36
+ literal 'remote'
37
+ literal 'set-url'
38
+ flag_option :push
39
+
40
+ end_of_options
41
+
42
+ operand :name, required: true
43
+ operand :newurl, required: true
44
+ operand :oldurl
45
+ end
46
+
47
+ # @!method call(*, **options)
48
+ #
49
+ # @param options [Hash] command options
50
+ #
51
+ # @option options [Boolean, nil] :push (nil) command option key; see
52
+ # overload docs for the full option list
53
+ #
54
+ # @overload call(name, newurl, oldurl = nil, **options)
55
+ #
56
+ # Execute the `git remote set-url` command
57
+ #
58
+ # @param name [String] the remote name to update
59
+ #
60
+ # @param newurl [String] the replacement URL
61
+ #
62
+ # @param oldurl [String, nil] a regex matching the existing URL to replace
63
+ #
64
+ # @param options [Hash] command options
65
+ #
66
+ # @option options [Boolean, nil] :push (nil) update push URLs instead of fetch URLs
67
+ #
68
+ # @return [Git::CommandLine::Result] the result of calling `git remote set-url`
69
+ #
70
+ # @raise [ArgumentError] if unsupported options are provided
71
+ #
72
+ # @raise [Git::FailedError] if git exits with a non-zero exit status
73
+ #
74
+ # @api public
75
+ end
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,70 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'git/commands/base'
4
+
5
+ module Git
6
+ module Commands
7
+ module Remote
8
+ # `git remote set-url --add` command
9
+ #
10
+ # Appends a new URL to the named remote's fetch or push URL list.
11
+ #
12
+ # @example Add an additional fetch URL to an existing remote
13
+ # set_url_add = Git::Commands::Remote::SetUrlAdd.new(execution_context)
14
+ # set_url_add.call('origin', 'https://mirror.example.com/repo.git')
15
+ #
16
+ # @example Add a push URL to an existing remote
17
+ # set_url_add = Git::Commands::Remote::SetUrlAdd.new(execution_context)
18
+ # set_url_add.call('origin', 'https://push.example.com/repo.git', push: true)
19
+ #
20
+ # @note `arguments` block audited against https://git-scm.com/docs/git-remote/2.53.0
21
+ #
22
+ # @see Git::Commands::Remote
23
+ #
24
+ # @see https://git-scm.com/docs/git-remote git-remote
25
+ #
26
+ # @api private
27
+ #
28
+ class SetUrlAdd < Git::Commands::Base
29
+ arguments do
30
+ literal 'remote'
31
+ literal 'set-url'
32
+ literal '--add'
33
+ flag_option :push
34
+
35
+ end_of_options
36
+
37
+ operand :name, required: true
38
+ operand :newurl, required: true
39
+ end
40
+
41
+ # @!method call(*, **options)
42
+ #
43
+ # @param options [Hash] command options
44
+ #
45
+ # @option options [Boolean, nil] :push (nil) command option key; see
46
+ # overload docs for the full option list
47
+ #
48
+ # @overload call(name, newurl, **options)
49
+ #
50
+ # Execute the `git remote set-url --add` command
51
+ #
52
+ # @param name [String] the remote name to update
53
+ #
54
+ # @param newurl [String] the URL to append
55
+ #
56
+ # @param options [Hash] command options
57
+ #
58
+ # @option options [Boolean, nil] :push (nil) add a push URL instead of a fetch URL
59
+ #
60
+ # @return [Git::CommandLine::Result] the result of calling `git remote set-url --add`
61
+ #
62
+ # @raise [ArgumentError] if unsupported options are provided
63
+ #
64
+ # @raise [Git::FailedError] if git exits with a non-zero exit status
65
+ #
66
+ # @api public
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,71 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'git/commands/base'
4
+
5
+ module Git
6
+ module Commands
7
+ module Remote
8
+ # `git remote set-url --delete` command
9
+ #
10
+ # Removes all URLs matching a regex from the named remote's configured URL list.
11
+ # By default operates on fetch URLs; pass `push: true` to target push URLs instead.
12
+ #
13
+ # @example Delete a fetch URL matching a pattern
14
+ # set_url_delete = Git::Commands::Remote::SetUrlDelete.new(execution_context)
15
+ # set_url_delete.call('origin', 'github')
16
+ #
17
+ # @example Delete a push URL matching a pattern
18
+ # set_url_delete = Git::Commands::Remote::SetUrlDelete.new(execution_context)
19
+ # set_url_delete.call('origin', 'github', push: true)
20
+ #
21
+ # @note `arguments` block audited against https://git-scm.com/docs/git-remote/2.53.0
22
+ #
23
+ # @see Git::Commands::Remote
24
+ #
25
+ # @see https://git-scm.com/docs/git-remote git-remote
26
+ #
27
+ # @api private
28
+ #
29
+ class SetUrlDelete < Git::Commands::Base
30
+ arguments do
31
+ literal 'remote'
32
+ literal 'set-url'
33
+ literal '--delete'
34
+ flag_option :push
35
+
36
+ end_of_options
37
+
38
+ operand :name, required: true
39
+ operand :url, required: true
40
+ end
41
+
42
+ # @!method call(*, **options)
43
+ #
44
+ # @param options [Hash] command options
45
+ #
46
+ # @option options [Boolean, nil] :push (nil) command option key; see
47
+ # overload docs for the full option list
48
+ #
49
+ # @overload call(name, url, **options)
50
+ #
51
+ # Execute the `git remote set-url --delete` command
52
+ #
53
+ # @param name [String] the remote name to update
54
+ #
55
+ # @param url [String] a regex selecting the URL or URLs to delete
56
+ #
57
+ # @param options [Hash] command options
58
+ #
59
+ # @option options [Boolean, nil] :push (nil) delete push URLs instead of fetch URLs
60
+ #
61
+ # @return [Git::CommandLine::Result] the result of calling `git remote set-url --delete`
62
+ #
63
+ # @raise [ArgumentError] if unsupported options are provided
64
+ #
65
+ # @raise [Git::FailedError] if git exits with a non-zero exit status
66
+ #
67
+ # @api public
68
+ end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,77 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'git/commands/base'
4
+
5
+ module Git
6
+ module Commands
7
+ module Remote
8
+ # `git remote show` command
9
+ #
10
+ # Shows information about one or more remotes, including fetch and push URLs
11
+ # and branch tracking information.
12
+ #
13
+ # @example Show information about a remote
14
+ # show = Git::Commands::Remote::Show.new(execution_context)
15
+ # show.call('origin')
16
+ #
17
+ # @example Show cached information without contacting the remote
18
+ # show = Git::Commands::Remote::Show.new(execution_context)
19
+ # show.call('origin', n: true)
20
+ #
21
+ # @example Show verbose output for multiple remotes
22
+ # show = Git::Commands::Remote::Show.new(execution_context)
23
+ # show.call('origin', 'upstream', verbose: true)
24
+ #
25
+ # @note `arguments` block audited against https://git-scm.com/docs/git-remote/2.53.0
26
+ #
27
+ # @see Git::Commands::Remote
28
+ #
29
+ # @see https://git-scm.com/docs/git-remote git-remote
30
+ #
31
+ # @api private
32
+ #
33
+ class Show < Git::Commands::Base
34
+ arguments do
35
+ literal 'remote'
36
+ flag_option %i[verbose v]
37
+ literal 'show'
38
+ flag_option :n
39
+
40
+ end_of_options
41
+
42
+ operand :name, repeatable: true, required: true
43
+ end
44
+
45
+ # @overload call(*name, **options)
46
+ #
47
+ # Execute the `git remote show` command
48
+ #
49
+ # @param name [Array<String>] one or more remote names to inspect
50
+ #
51
+ # @param options [Hash] command options
52
+ #
53
+ # @option options [Boolean, nil] :verbose (nil) show the remote URL after
54
+ # the remote name
55
+ #
56
+ # Alias: :v
57
+ #
58
+ # @option options [Boolean, nil] :n (nil) do not query remote heads with
59
+ # `git ls-remote`
60
+ #
61
+ # Uses cached information instead of contacting the remote server.
62
+ #
63
+ # @return [Git::CommandLine::Result] the result of calling `git remote show`
64
+ #
65
+ # @raise [ArgumentError] if unsupported options are provided
66
+ #
67
+ # @raise [Git::FailedError] if git exits with a non-zero exit status
68
+ #
69
+ # @api public
70
+ #
71
+ def call(*, **)
72
+ super
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,79 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'git/commands/base'
4
+
5
+ module Git
6
+ module Commands
7
+ module Remote
8
+ # `git remote update` command
9
+ #
10
+ # Fetches updates for remotes or remote groups in the repository. When neither
11
+ # a remote nor a group is specified, updates all remotes that are not marked
12
+ # with `remote.<name>.skipDefaultUpdate`.
13
+ #
14
+ # @example Fetch updates for all configured remotes
15
+ # update = Git::Commands::Remote::Update.new(execution_context)
16
+ # update.call
17
+ #
18
+ # @example Fetch updates for a specific remote
19
+ # update = Git::Commands::Remote::Update.new(execution_context)
20
+ # update.call('origin')
21
+ #
22
+ # @example Fetch updates and prune stale tracking refs
23
+ # update = Git::Commands::Remote::Update.new(execution_context)
24
+ # update.call('origin', prune: true)
25
+ #
26
+ # @note `arguments` block audited against https://git-scm.com/docs/git-remote/2.53.0
27
+ #
28
+ # @see Git::Commands::Remote
29
+ #
30
+ # @see https://git-scm.com/docs/git-remote git-remote
31
+ #
32
+ # @api private
33
+ #
34
+ class Update < Git::Commands::Base
35
+ arguments do
36
+ literal 'remote'
37
+ flag_option %i[verbose v]
38
+ literal 'update'
39
+ flag_option %i[prune p]
40
+
41
+ end_of_options
42
+
43
+ operand :remote_or_group, repeatable: true
44
+ end
45
+
46
+ # @overload call(*remote_or_group, **options)
47
+ #
48
+ # Execute the `git remote update` command
49
+ #
50
+ # @param remote_or_group [Array<String>] zero or more remote names or
51
+ # remote group names
52
+ #
53
+ # @param options [Hash] command options
54
+ #
55
+ # @option options [Boolean, nil] :verbose (nil) show remote URLs alongside
56
+ # remote names
57
+ #
58
+ # Alias: :v
59
+ #
60
+ # @option options [Boolean, nil] :prune (nil) prune stale tracking refs
61
+ # while updating remotes
62
+ #
63
+ # Alias: :p
64
+ #
65
+ # @return [Git::CommandLine::Result] the result of calling `git remote update`
66
+ #
67
+ # @raise [ArgumentError] if unsupported options are provided
68
+ #
69
+ # @raise [Git::FailedError] if git exits with a non-zero exit status
70
+ #
71
+ # @api public
72
+ #
73
+ def call(*, **)
74
+ super
75
+ end
76
+ end
77
+ end
78
+ end
79
+ end