git 4.3.2 → 5.0.0.beta.1
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/.github/copilot-instructions.md +67 -2705
- data/.github/pull_request_template.md +3 -1
- data/.github/skills/breaking-change-analysis/SKILL.md +102 -0
- data/.github/skills/ci-cd-troubleshooting/SKILL.md +264 -0
- data/.github/skills/command-implementation/REFERENCE.md +993 -0
- data/.github/skills/command-implementation/SKILL.md +229 -0
- data/.github/skills/command-test-conventions/SKILL.md +660 -0
- data/.github/skills/command-yard-documentation/SKILL.md +426 -0
- data/.github/skills/dependency-management/SKILL.md +72 -0
- data/.github/skills/development-workflow/SKILL.md +506 -0
- data/.github/skills/extract-command-from-lib/SKILL.md +487 -0
- data/.github/skills/extract-facade-from-base-lib/SKILL.md +586 -0
- data/.github/skills/facade-implementation/REFERENCE.md +840 -0
- data/.github/skills/facade-implementation/SKILL.md +260 -0
- data/.github/skills/facade-test-conventions/SKILL.md +380 -0
- data/.github/skills/facade-yard-documentation/SKILL.md +429 -0
- data/.github/skills/make-skill-template/SKILL.md +176 -0
- data/.github/skills/pr-readiness-review/SKILL.md +185 -0
- data/.github/skills/project-context/SKILL.md +313 -0
- data/.github/skills/pull-request-review/SKILL.md +168 -0
- data/.github/skills/refactor-command-to-commandlineresult/SKILL.md +131 -0
- data/.github/skills/release-management/SKILL.md +125 -0
- data/.github/skills/review-arguments-dsl/CHECKLIST.md +788 -0
- data/.github/skills/review-arguments-dsl/SKILL.md +214 -0
- data/.github/skills/review-backward-compatibility/SKILL.md +275 -0
- data/.github/skills/review-cross-command-consistency/SKILL.md +139 -0
- data/.github/skills/reviewing-skills/SKILL.md +189 -0
- data/.github/skills/rspec-unit-testing-standards/SKILL.md +639 -0
- data/.github/skills/tdd-refactor-step/SKILL.md +236 -0
- data/.github/skills/test-debugging/SKILL.md +160 -0
- data/.github/skills/yard-documentation/SKILL.md +793 -0
- data/.github/workflows/continuous_integration.yml +3 -2
- data/.github/workflows/enforce_conventional_commits.yml +1 -1
- data/.github/workflows/experimental_continuous_integration.yml +2 -2
- data/.github/workflows/release.yml +3 -4
- data/.gitignore +8 -0
- data/.husky/pre-commit +13 -0
- data/.release-please-manifest.json +1 -1
- data/.rspec +3 -0
- data/.rubocop.yml +7 -3
- data/.rubocop_todo.yml +23 -5
- data/.yardopts +1 -0
- data/CHANGELOG.md +0 -40
- data/CONTRIBUTING.md +694 -53
- data/README.md +17 -5
- data/Rakefile +61 -9
- data/commitlint.test +4 -0
- data/git.gemspec +14 -8
- data/lib/git/args_builder.rb +0 -8
- data/lib/git/base.rb +486 -410
- data/lib/git/branch.rb +380 -43
- data/lib/git/branch_delete_failure.rb +31 -0
- data/lib/git/branch_delete_result.rb +63 -0
- data/lib/git/branch_info.rb +178 -0
- data/lib/git/branches.rb +130 -24
- data/lib/git/command_line/base.rb +245 -0
- data/lib/git/command_line/capturing.rb +249 -0
- data/lib/git/command_line/result.rb +96 -0
- data/lib/git/command_line/streaming.rb +194 -0
- data/lib/git/command_line.rb +43 -322
- data/lib/git/command_line_result.rb +4 -88
- data/lib/git/commands/add.rb +131 -0
- data/lib/git/commands/am/abort.rb +43 -0
- data/lib/git/commands/am/apply.rb +252 -0
- data/lib/git/commands/am/continue.rb +43 -0
- data/lib/git/commands/am/quit.rb +43 -0
- data/lib/git/commands/am/retry.rb +47 -0
- data/lib/git/commands/am/show_current_patch.rb +64 -0
- data/lib/git/commands/am/skip.rb +42 -0
- data/lib/git/commands/am.rb +33 -0
- data/lib/git/commands/apply.rb +237 -0
- data/lib/git/commands/archive/list_formats.rb +46 -0
- data/lib/git/commands/archive.rb +140 -0
- data/lib/git/commands/arguments.rb +3510 -0
- data/lib/git/commands/base.rb +403 -0
- data/lib/git/commands/branch/copy.rb +94 -0
- data/lib/git/commands/branch/create.rb +173 -0
- data/lib/git/commands/branch/delete.rb +80 -0
- data/lib/git/commands/branch/list.rb +162 -0
- data/lib/git/commands/branch/move.rb +94 -0
- data/lib/git/commands/branch/set_upstream.rb +86 -0
- data/lib/git/commands/branch/show_current.rb +49 -0
- data/lib/git/commands/branch/unset_upstream.rb +57 -0
- data/lib/git/commands/branch.rb +34 -0
- data/lib/git/commands/cat_file/batch.rb +364 -0
- data/lib/git/commands/cat_file/filtered.rb +105 -0
- data/lib/git/commands/cat_file/raw.rb +210 -0
- data/lib/git/commands/cat_file.rb +49 -0
- data/lib/git/commands/checkout/branch.rb +151 -0
- data/lib/git/commands/checkout/files.rb +115 -0
- data/lib/git/commands/checkout.rb +38 -0
- data/lib/git/commands/checkout_index.rb +105 -0
- data/lib/git/commands/clean.rb +100 -0
- data/lib/git/commands/clone.rb +240 -0
- data/lib/git/commands/commit.rb +272 -0
- data/lib/git/commands/commit_tree.rb +100 -0
- data/lib/git/commands/config_option_syntax/add.rb +83 -0
- data/lib/git/commands/config_option_syntax/get.rb +117 -0
- data/lib/git/commands/config_option_syntax/get_all.rb +115 -0
- data/lib/git/commands/config_option_syntax/get_color.rb +91 -0
- data/lib/git/commands/config_option_syntax/get_color_bool.rb +93 -0
- data/lib/git/commands/config_option_syntax/get_regexp.rb +115 -0
- data/lib/git/commands/config_option_syntax/get_urlmatch.rb +102 -0
- data/lib/git/commands/config_option_syntax/list.rb +107 -0
- data/lib/git/commands/config_option_syntax/remove_section.rb +74 -0
- data/lib/git/commands/config_option_syntax/rename_section.rb +78 -0
- data/lib/git/commands/config_option_syntax/replace_all.rb +104 -0
- data/lib/git/commands/config_option_syntax/set.rb +114 -0
- data/lib/git/commands/config_option_syntax/unset.rb +89 -0
- data/lib/git/commands/config_option_syntax/unset_all.rb +89 -0
- data/lib/git/commands/config_option_syntax.rb +56 -0
- data/lib/git/commands/describe.rb +155 -0
- data/lib/git/commands/diff.rb +656 -0
- data/lib/git/commands/diff_files.rb +518 -0
- data/lib/git/commands/diff_index.rb +496 -0
- data/lib/git/commands/fetch.rb +352 -0
- data/lib/git/commands/fsck.rb +136 -0
- data/lib/git/commands/gc.rb +132 -0
- data/lib/git/commands/grep.rb +338 -0
- data/lib/git/commands/init.rb +99 -0
- data/lib/git/commands/log.rb +632 -0
- data/lib/git/commands/ls_files.rb +191 -0
- data/lib/git/commands/ls_remote.rb +155 -0
- data/lib/git/commands/ls_tree.rb +131 -0
- data/lib/git/commands/maintenance/register.rb +75 -0
- data/lib/git/commands/maintenance/run.rb +104 -0
- data/lib/git/commands/maintenance/start.rb +66 -0
- data/lib/git/commands/maintenance/stop.rb +55 -0
- data/lib/git/commands/maintenance/unregister.rb +79 -0
- data/lib/git/commands/maintenance.rb +31 -0
- data/lib/git/commands/merge/abort.rb +44 -0
- data/lib/git/commands/merge/continue.rb +44 -0
- data/lib/git/commands/merge/quit.rb +46 -0
- data/lib/git/commands/merge/start.rb +245 -0
- data/lib/git/commands/merge.rb +28 -0
- data/lib/git/commands/merge_base.rb +86 -0
- data/lib/git/commands/mv.rb +77 -0
- data/lib/git/commands/name_rev.rb +114 -0
- data/lib/git/commands/pull.rb +377 -0
- data/lib/git/commands/push.rb +246 -0
- data/lib/git/commands/read_tree.rb +149 -0
- data/lib/git/commands/remote/add.rb +91 -0
- data/lib/git/commands/remote/get_url.rb +66 -0
- data/lib/git/commands/remote/list.rb +54 -0
- data/lib/git/commands/remote/prune.rb +61 -0
- data/lib/git/commands/remote/remove.rb +52 -0
- data/lib/git/commands/remote/rename.rb +69 -0
- data/lib/git/commands/remote/set_branches.rb +63 -0
- data/lib/git/commands/remote/set_head.rb +82 -0
- data/lib/git/commands/remote/set_url.rb +71 -0
- data/lib/git/commands/remote/set_url_add.rb +61 -0
- data/lib/git/commands/remote/set_url_delete.rb +64 -0
- data/lib/git/commands/remote/show.rb +71 -0
- data/lib/git/commands/remote/update.rb +72 -0
- data/lib/git/commands/remote.rb +42 -0
- data/lib/git/commands/repack.rb +277 -0
- data/lib/git/commands/reset.rb +147 -0
- data/lib/git/commands/rev_parse.rb +297 -0
- data/lib/git/commands/revert/abort.rb +45 -0
- data/lib/git/commands/revert/continue.rb +57 -0
- data/lib/git/commands/revert/quit.rb +47 -0
- data/lib/git/commands/revert/skip.rb +44 -0
- data/lib/git/commands/revert/start.rb +153 -0
- data/lib/git/commands/revert.rb +29 -0
- data/lib/git/commands/rm.rb +114 -0
- data/lib/git/commands/show.rb +632 -0
- data/lib/git/commands/show_ref/exclude_existing.rb +120 -0
- data/lib/git/commands/show_ref/exists.rb +78 -0
- data/lib/git/commands/show_ref/list.rb +145 -0
- data/lib/git/commands/show_ref/verify.rb +120 -0
- data/lib/git/commands/show_ref.rb +42 -0
- data/lib/git/commands/stash/apply.rb +75 -0
- data/lib/git/commands/stash/branch.rb +65 -0
- data/lib/git/commands/stash/clear.rb +41 -0
- data/lib/git/commands/stash/create.rb +58 -0
- data/lib/git/commands/stash/drop.rb +67 -0
- data/lib/git/commands/stash/list.rb +39 -0
- data/lib/git/commands/stash/pop.rb +78 -0
- data/lib/git/commands/stash/push.rb +103 -0
- data/lib/git/commands/stash/show.rb +149 -0
- data/lib/git/commands/stash/store.rb +63 -0
- data/lib/git/commands/stash.rb +38 -0
- data/lib/git/commands/status.rb +169 -0
- data/lib/git/commands/symbolic_ref/delete.rb +68 -0
- data/lib/git/commands/symbolic_ref/read.rb +95 -0
- data/lib/git/commands/symbolic_ref/update.rb +76 -0
- data/lib/git/commands/symbolic_ref.rb +38 -0
- data/lib/git/commands/tag/create.rb +139 -0
- data/lib/git/commands/tag/delete.rb +55 -0
- data/lib/git/commands/tag/list.rb +143 -0
- data/lib/git/commands/tag/verify.rb +71 -0
- data/lib/git/commands/tag.rb +26 -0
- data/lib/git/commands/update_ref/batch.rb +140 -0
- data/lib/git/commands/update_ref/delete.rb +92 -0
- data/lib/git/commands/update_ref/update.rb +106 -0
- data/lib/git/commands/update_ref.rb +42 -0
- data/lib/git/commands/version.rb +52 -0
- data/lib/git/commands/worktree/add.rb +140 -0
- data/lib/git/commands/worktree/list.rb +64 -0
- data/lib/git/commands/worktree/lock.rb +58 -0
- data/lib/git/commands/worktree/management_base.rb +51 -0
- data/lib/git/commands/worktree/move.rb +66 -0
- data/lib/git/commands/worktree/prune.rb +67 -0
- data/lib/git/commands/worktree/remove.rb +63 -0
- data/lib/git/commands/worktree/repair.rb +76 -0
- data/lib/git/commands/worktree/unlock.rb +47 -0
- data/lib/git/commands/worktree.rb +43 -0
- data/lib/git/commands/write_tree.rb +68 -0
- data/lib/git/commands.rb +89 -0
- data/lib/git/detached_head_info.rb +54 -0
- data/lib/git/diff.rb +297 -7
- data/lib/git/diff_file_numstat_info.rb +29 -0
- data/lib/git/diff_file_patch_info.rb +134 -0
- data/lib/git/diff_file_raw_info.rb +127 -0
- data/lib/git/diff_info.rb +169 -0
- data/lib/git/diff_path_status.rb +78 -19
- data/lib/git/diff_result.rb +32 -0
- data/lib/git/diff_stats.rb +59 -14
- data/lib/git/dirstat_info.rb +86 -0
- data/lib/git/errors.rb +65 -2
- data/lib/git/execution_context/global.rb +56 -0
- data/lib/git/execution_context/repository.rb +147 -0
- data/lib/git/execution_context.rb +482 -0
- data/lib/git/file_ref.rb +74 -0
- data/lib/git/fsck_object.rb +9 -9
- data/lib/git/fsck_result.rb +1 -1
- data/lib/git/lib.rb +1606 -1028
- data/lib/git/log.rb +15 -2
- data/lib/git/object.rb +92 -22
- data/lib/git/parsers/branch.rb +224 -0
- data/lib/git/parsers/cat_file.rb +111 -0
- data/lib/git/parsers/diff.rb +585 -0
- data/lib/git/parsers/fsck.rb +133 -0
- data/lib/git/parsers/grep.rb +42 -0
- data/lib/git/parsers/ls_tree.rb +58 -0
- data/lib/git/parsers/stash.rb +208 -0
- data/lib/git/parsers/tag.rb +257 -0
- data/lib/git/remote.rb +133 -9
- data/lib/git/repository/branching.rb +572 -0
- data/lib/git/repository/committing.rb +191 -0
- data/lib/git/repository/configuring.rb +156 -0
- data/lib/git/repository/diffing.rb +775 -0
- data/lib/git/repository/inspecting.rb +153 -0
- data/lib/git/repository/logging.rb +247 -0
- data/lib/git/repository/merging.rb +295 -0
- data/lib/git/repository/object_operations.rb +1101 -0
- data/lib/git/repository/path_resolver.rb +207 -0
- data/lib/git/repository/remote_operations.rb +753 -0
- data/lib/git/repository/shared_private.rb +51 -0
- data/lib/git/repository/staging.rb +390 -0
- data/lib/git/repository/stashing.rb +107 -0
- data/lib/git/repository/status_operations.rb +180 -0
- data/lib/git/repository/worktree_operations.rb +159 -0
- data/lib/git/repository.rb +264 -1
- data/lib/git/stash.rb +85 -4
- data/lib/git/stash_info.rb +104 -0
- data/lib/git/stashes.rb +130 -13
- data/lib/git/status.rb +224 -18
- data/lib/git/tag_delete_failure.rb +31 -0
- data/lib/git/tag_delete_result.rb +63 -0
- data/lib/git/tag_info.rb +105 -0
- data/lib/git/version.rb +109 -2
- data/lib/git/version_constraint.rb +81 -0
- data/lib/git/worktree.rb +120 -5
- data/lib/git/worktrees.rb +107 -7
- data/lib/git.rb +114 -18
- data/redesign/1_architecture_existing.md +54 -18
- data/redesign/2_architecture_redesign.md +365 -46
- data/redesign/3_architecture_implementation.md +1451 -54
- data/tasks/gem_tasks.rake +4 -0
- data/tasks/npm_tasks.rake +7 -0
- data/tasks/rspec.rake +48 -0
- data/tasks/test.rake +13 -1
- data/tasks/yard.rake +34 -7
- metadata +349 -20
- data/lib/git/index.rb +0 -6
- data/lib/git/path.rb +0 -38
- data/lib/git/working_directory.rb +0 -6
- /data/{release-please-config.json → .release-please-config.json} +0 -0
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'git/commands/base'
|
|
4
|
+
|
|
5
|
+
module Git
|
|
6
|
+
module Commands
|
|
7
|
+
# Implements the `git push` command
|
|
8
|
+
#
|
|
9
|
+
# Updates remote refs using local refs, while sending objects necessary to
|
|
10
|
+
# complete the given refs.
|
|
11
|
+
#
|
|
12
|
+
# @example Push to the default remote
|
|
13
|
+
# push = Git::Commands::Push.new(execution_context)
|
|
14
|
+
# push.call
|
|
15
|
+
#
|
|
16
|
+
# @example Push to a named remote
|
|
17
|
+
# push = Git::Commands::Push.new(execution_context)
|
|
18
|
+
# push.call('origin')
|
|
19
|
+
#
|
|
20
|
+
# @example Push a specific branch to a remote
|
|
21
|
+
# push = Git::Commands::Push.new(execution_context)
|
|
22
|
+
# push.call('origin', 'main')
|
|
23
|
+
#
|
|
24
|
+
# @example Force push to a remote branch
|
|
25
|
+
# push = Git::Commands::Push.new(execution_context)
|
|
26
|
+
# push.call('origin', 'main', force: true)
|
|
27
|
+
#
|
|
28
|
+
# @example Push with a server-side option
|
|
29
|
+
# push = Git::Commands::Push.new(execution_context)
|
|
30
|
+
# push.call('origin', push_option: 'ci.skip')
|
|
31
|
+
#
|
|
32
|
+
# @example Push all tags to a remote
|
|
33
|
+
# push = Git::Commands::Push.new(execution_context)
|
|
34
|
+
# push.call('origin', tags: true)
|
|
35
|
+
#
|
|
36
|
+
# @note `arguments` block audited against https://git-scm.com/docs/git-push/2.53.0
|
|
37
|
+
#
|
|
38
|
+
# @see https://git-scm.com/docs/git-push git-push
|
|
39
|
+
#
|
|
40
|
+
# @see Git::Commands
|
|
41
|
+
#
|
|
42
|
+
# @api private
|
|
43
|
+
#
|
|
44
|
+
class Push < Git::Commands::Base
|
|
45
|
+
arguments do
|
|
46
|
+
literal 'push'
|
|
47
|
+
|
|
48
|
+
# Push scope (SYNOPSIS order: [--all | --branches | --mirror | --tags])
|
|
49
|
+
flag_option %i[all branches]
|
|
50
|
+
flag_option :mirror
|
|
51
|
+
flag_option :tags
|
|
52
|
+
flag_option :follow_tags, negatable: true
|
|
53
|
+
flag_option :atomic, negatable: true
|
|
54
|
+
|
|
55
|
+
# Transfer options
|
|
56
|
+
flag_option %i[dry_run n]
|
|
57
|
+
flag_option :porcelain
|
|
58
|
+
value_option %i[receive_pack exec], inline: true
|
|
59
|
+
value_option :repo, inline: true
|
|
60
|
+
|
|
61
|
+
# Safety
|
|
62
|
+
flag_option %i[force f]
|
|
63
|
+
flag_option %i[delete d]
|
|
64
|
+
flag_option :prune
|
|
65
|
+
|
|
66
|
+
# Output verbosity
|
|
67
|
+
flag_option %i[quiet q]
|
|
68
|
+
flag_option %i[verbose v]
|
|
69
|
+
|
|
70
|
+
# Tracking
|
|
71
|
+
flag_option %i[set_upstream u]
|
|
72
|
+
|
|
73
|
+
# Push options (server-side)
|
|
74
|
+
value_option %i[push_option o], repeatable: true, inline: true
|
|
75
|
+
|
|
76
|
+
# GPG signing
|
|
77
|
+
flag_or_value_option :signed,
|
|
78
|
+
negatable: true, inline: true
|
|
79
|
+
|
|
80
|
+
# Force safety
|
|
81
|
+
flag_or_value_option :force_with_lease,
|
|
82
|
+
negatable: true, inline: true
|
|
83
|
+
flag_option :force_if_includes, negatable: true
|
|
84
|
+
|
|
85
|
+
# Hooks
|
|
86
|
+
flag_option :verify, negatable: true
|
|
87
|
+
|
|
88
|
+
# Submodules
|
|
89
|
+
flag_or_value_option :recurse_submodules,
|
|
90
|
+
negatable: true, inline: true, type: String
|
|
91
|
+
|
|
92
|
+
# Transfer
|
|
93
|
+
flag_option :thin, negatable: true
|
|
94
|
+
flag_option :progress
|
|
95
|
+
|
|
96
|
+
# Protocol and connectivity
|
|
97
|
+
flag_option %i[ipv4 4]
|
|
98
|
+
flag_option %i[ipv6 6]
|
|
99
|
+
|
|
100
|
+
# Execution options (not emitted as CLI flags)
|
|
101
|
+
execution_option :timeout
|
|
102
|
+
|
|
103
|
+
end_of_options
|
|
104
|
+
|
|
105
|
+
operand :repository
|
|
106
|
+
operand :refspec, repeatable: true
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
# @!method call(*, **)
|
|
110
|
+
#
|
|
111
|
+
# Execute the `git push` command
|
|
112
|
+
#
|
|
113
|
+
# @overload call(repository = nil, *refspecs, **options)
|
|
114
|
+
#
|
|
115
|
+
# @param repository [String, nil] The remote name or URL to push to
|
|
116
|
+
#
|
|
117
|
+
# When nil, git uses the default remote configured for the current branch.
|
|
118
|
+
#
|
|
119
|
+
# @param refspecs [Array<String>] Zero or more refspecs specifying which refs to push
|
|
120
|
+
#
|
|
121
|
+
# Each may be a branch name or a full refspec pattern such as
|
|
122
|
+
# `refs/heads/main:refs/heads/main`. When no refspecs are given, git uses
|
|
123
|
+
# the push configuration for the current branch.
|
|
124
|
+
#
|
|
125
|
+
# @param options [Hash] command options
|
|
126
|
+
#
|
|
127
|
+
# @option options [Boolean, nil] :all (nil) push all branches
|
|
128
|
+
#
|
|
129
|
+
# Alias: :branches
|
|
130
|
+
#
|
|
131
|
+
# @option options [Boolean, nil] :mirror (nil) push all refs under `refs/` to the remote
|
|
132
|
+
#
|
|
133
|
+
# @option options [Boolean, nil] :tags (nil) push all refs under `refs/tags/`
|
|
134
|
+
#
|
|
135
|
+
# @option options [Boolean, nil] :follow_tags (nil) push reachable annotated tags (`--follow-tags`)
|
|
136
|
+
#
|
|
137
|
+
# @option options [Boolean, nil] :no_follow_tags (nil) do not push reachable annotated tags
|
|
138
|
+
# (`--no-follow-tags`)
|
|
139
|
+
#
|
|
140
|
+
# @option options [Boolean, nil] :atomic (nil) use an atomic transaction to update remote refs (`--atomic`)
|
|
141
|
+
#
|
|
142
|
+
# @option options [Boolean, nil] :no_atomic (nil) disable atomic transaction for remote updates
|
|
143
|
+
# (`--no-atomic`)
|
|
144
|
+
#
|
|
145
|
+
# @option options [Boolean, nil] :dry_run (nil) do not send updates, only report what would be pushed
|
|
146
|
+
#
|
|
147
|
+
# Alias: :n
|
|
148
|
+
#
|
|
149
|
+
# @option options [Boolean, nil] :porcelain (nil) produce machine-readable output
|
|
150
|
+
#
|
|
151
|
+
# @option options [String] :receive_pack (nil) path to the git-receive-pack program on the remote end
|
|
152
|
+
#
|
|
153
|
+
# Alias: :exec
|
|
154
|
+
#
|
|
155
|
+
# @option options [String] :repo (nil) use this repository instead of the
|
|
156
|
+
# positional repository argument
|
|
157
|
+
#
|
|
158
|
+
# Equivalent to the positional `<repository>` argument. If both are given, the
|
|
159
|
+
# positional argument takes precedence.
|
|
160
|
+
#
|
|
161
|
+
# @option options [Boolean, nil] :force (nil) force updates, overriding the fast-forward check
|
|
162
|
+
#
|
|
163
|
+
# Alias: :f
|
|
164
|
+
#
|
|
165
|
+
# @option options [Boolean, nil] :delete (nil) delete all listed refs from the remote repository
|
|
166
|
+
#
|
|
167
|
+
# Alias: :d
|
|
168
|
+
#
|
|
169
|
+
# @option options [Boolean, nil] :prune (nil) remove remote branches that have no local counterpart
|
|
170
|
+
#
|
|
171
|
+
# @option options [Boolean, nil] :quiet (nil) suppress all output
|
|
172
|
+
#
|
|
173
|
+
# Alias: :q
|
|
174
|
+
#
|
|
175
|
+
# @option options [Boolean, nil] :verbose (nil) run verbosely
|
|
176
|
+
#
|
|
177
|
+
# Alias: :v
|
|
178
|
+
#
|
|
179
|
+
# @option options [Boolean, nil] :set_upstream (nil) set upstream tracking for each successfully pushed branch
|
|
180
|
+
#
|
|
181
|
+
# Alias: :u
|
|
182
|
+
#
|
|
183
|
+
# @option options [String, Array<String>] :push_option (nil) transmit one or more server-side options
|
|
184
|
+
#
|
|
185
|
+
# Repeatable. Each occurrence emits a separate `--push-option=<value>` flag.
|
|
186
|
+
#
|
|
187
|
+
# Alias: :o
|
|
188
|
+
#
|
|
189
|
+
# @option options [Boolean, String, nil] :signed (nil) GPG-sign the push certificate (`--signed`)
|
|
190
|
+
#
|
|
191
|
+
# When a String (`'true'`, `'false'`, `'if-asked'`), emits `--signed=<value>`.
|
|
192
|
+
#
|
|
193
|
+
# @option options [Boolean, nil] :no_signed (nil) disable GPG signing of the push certificate (`--no-signed`)
|
|
194
|
+
#
|
|
195
|
+
# @option options [Boolean, String, nil] :force_with_lease (nil) refuse force pushes unless the
|
|
196
|
+
# remote ref matches the expected value (`--force-with-lease`)
|
|
197
|
+
#
|
|
198
|
+
# When a String (e.g. `'main:abc123'`), emits `--force-with-lease=<string>`.
|
|
199
|
+
#
|
|
200
|
+
# @option options [Boolean, nil] :no_force_with_lease (nil) disable force-with-lease (`--no-force-with-lease`)
|
|
201
|
+
#
|
|
202
|
+
# @option options [Boolean, nil] :force_if_includes (nil) force pushes only if commits being
|
|
203
|
+
# pushed are already in the remote-tracking branch (`--force-if-includes`)
|
|
204
|
+
#
|
|
205
|
+
# @option options [Boolean, nil] :no_force_if_includes (nil) disable force-if-includes
|
|
206
|
+
# (`--no-force-if-includes`)
|
|
207
|
+
#
|
|
208
|
+
# @option options [Boolean, nil] :verify (nil) run the pre-push hook (`--verify`)
|
|
209
|
+
#
|
|
210
|
+
# @option options [Boolean, nil] :no_verify (nil) bypass the pre-push hook (`--no-verify`)
|
|
211
|
+
#
|
|
212
|
+
# @option options [String] :recurse_submodules (nil) control whether submodule
|
|
213
|
+
# commits are pushed
|
|
214
|
+
#
|
|
215
|
+
# Pass a String (`'check'`, `'on-demand'`, `'only'`, `'no'`) to emit
|
|
216
|
+
# `--recurse-submodules=<value>`. Note: passing `true` is not valid; git requires
|
|
217
|
+
# an explicit value for this option.
|
|
218
|
+
#
|
|
219
|
+
# @option options [Boolean, nil] :no_recurse_submodules (nil) disable submodule push
|
|
220
|
+
# (`--no-recurse-submodules`)
|
|
221
|
+
#
|
|
222
|
+
# @option options [Boolean, nil] :thin (nil) send a "thin" pack to reduce network traffic (`--thin`)
|
|
223
|
+
#
|
|
224
|
+
# @option options [Boolean, nil] :no_thin (nil) send a full pack instead of a thin pack (`--no-thin`)
|
|
225
|
+
#
|
|
226
|
+
# @option options [Boolean, nil] :progress (nil) force progress reporting even when stderr is not a terminal
|
|
227
|
+
#
|
|
228
|
+
# @option options [Boolean, nil] :ipv4 (nil) use IPv4 addresses only
|
|
229
|
+
#
|
|
230
|
+
# Alias: :"4"
|
|
231
|
+
#
|
|
232
|
+
# @option options [Boolean, nil] :ipv6 (nil) use IPv6 addresses only
|
|
233
|
+
#
|
|
234
|
+
# Alias: :"6"
|
|
235
|
+
#
|
|
236
|
+
# @option options [Integer] :timeout (nil) maximum seconds to wait for the command to complete
|
|
237
|
+
#
|
|
238
|
+
# @return [Git::CommandLineResult] the result of calling `git push`
|
|
239
|
+
#
|
|
240
|
+
# @raise [ArgumentError] if unsupported options are provided
|
|
241
|
+
#
|
|
242
|
+
# @raise [Git::FailedError] if git exits with a non-zero exit status
|
|
243
|
+
#
|
|
244
|
+
end
|
|
245
|
+
end
|
|
246
|
+
end
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'git/commands/base'
|
|
4
|
+
|
|
5
|
+
module Git
|
|
6
|
+
module Commands
|
|
7
|
+
# Implements the `git read-tree` command
|
|
8
|
+
#
|
|
9
|
+
# Reads tree information into the index. Optionally performs a merge
|
|
10
|
+
# (single-tree, two-way fast-forward, or three-way) with the `-m` flag,
|
|
11
|
+
# and updates the working tree files with `-u`.
|
|
12
|
+
#
|
|
13
|
+
# @example Read a single tree into the index
|
|
14
|
+
# read_tree = Git::Commands::ReadTree.new(execution_context)
|
|
15
|
+
# result = read_tree.call('HEAD')
|
|
16
|
+
#
|
|
17
|
+
# @example Read a tree under a prefix directory
|
|
18
|
+
# read_tree = Git::Commands::ReadTree.new(execution_context)
|
|
19
|
+
# result = read_tree.call('HEAD', prefix: 'subdir/')
|
|
20
|
+
#
|
|
21
|
+
# @example Perform a three-way merge
|
|
22
|
+
# read_tree = Git::Commands::ReadTree.new(execution_context)
|
|
23
|
+
# result = read_tree.call('base', 'ours', 'theirs', m: true, u: true)
|
|
24
|
+
#
|
|
25
|
+
# @example Empty the index
|
|
26
|
+
# read_tree = Git::Commands::ReadTree.new(execution_context)
|
|
27
|
+
# result = read_tree.call(empty: true)
|
|
28
|
+
#
|
|
29
|
+
# @note `arguments` block audited against https://git-scm.com/docs/git-read-tree/2.53.0
|
|
30
|
+
#
|
|
31
|
+
# @see https://git-scm.com/docs/git-read-tree git-read-tree
|
|
32
|
+
#
|
|
33
|
+
# @see Git::Commands
|
|
34
|
+
#
|
|
35
|
+
# @api private
|
|
36
|
+
#
|
|
37
|
+
class ReadTree < Git::Commands::Base
|
|
38
|
+
arguments do
|
|
39
|
+
literal 'read-tree'
|
|
40
|
+
|
|
41
|
+
# Merge mode
|
|
42
|
+
flag_option :m
|
|
43
|
+
flag_option :trivial
|
|
44
|
+
flag_option :aggressive
|
|
45
|
+
flag_option :reset
|
|
46
|
+
value_option :prefix, inline: true
|
|
47
|
+
|
|
48
|
+
# Working tree update
|
|
49
|
+
flag_option :u
|
|
50
|
+
flag_option :i
|
|
51
|
+
|
|
52
|
+
# Dry run and progress
|
|
53
|
+
flag_option %i[dry_run n]
|
|
54
|
+
flag_option :v
|
|
55
|
+
|
|
56
|
+
# Filtering and output
|
|
57
|
+
value_option :index_output, inline: true
|
|
58
|
+
flag_option :recurse_submodules, negatable: true
|
|
59
|
+
flag_option :no_sparse_checkout
|
|
60
|
+
flag_option :empty
|
|
61
|
+
|
|
62
|
+
# Feedback control
|
|
63
|
+
flag_option %i[quiet q]
|
|
64
|
+
|
|
65
|
+
end_of_options
|
|
66
|
+
|
|
67
|
+
operand :tree_ish, repeatable: true
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# @!method call(*, **)
|
|
71
|
+
#
|
|
72
|
+
# @overload call(*tree_ish, **options)
|
|
73
|
+
#
|
|
74
|
+
# Execute the `git read-tree` command
|
|
75
|
+
#
|
|
76
|
+
# @param tree_ish [Array<String>] zero or more tree-ish objects to
|
|
77
|
+
# read into the index
|
|
78
|
+
#
|
|
79
|
+
# Pass one tree-ish for a simple read or single-tree merge, two
|
|
80
|
+
# for a fast-forward (two-way) merge, or three for a three-way
|
|
81
|
+
# merge. Omit when using the `:empty` option.
|
|
82
|
+
#
|
|
83
|
+
# @param options [Hash] command options
|
|
84
|
+
#
|
|
85
|
+
# @option options [Boolean, nil] :m (nil) perform a merge, not just a
|
|
86
|
+
# read
|
|
87
|
+
#
|
|
88
|
+
# @option options [Boolean, nil] :trivial (nil) restrict three-way merge
|
|
89
|
+
# to happen only if there is no file-level merging required
|
|
90
|
+
#
|
|
91
|
+
# @option options [Boolean, nil] :aggressive (nil) resolve a few more
|
|
92
|
+
# three-way merge cases internally beyond the trivial defaults
|
|
93
|
+
#
|
|
94
|
+
# @option options [Boolean, nil] :reset (nil) same as `-m`, except that
|
|
95
|
+
# unmerged entries are discarded instead of failing
|
|
96
|
+
#
|
|
97
|
+
# @option options [String] :prefix (nil) keep the current index
|
|
98
|
+
# contents, and read the named tree-ish under the directory at
|
|
99
|
+
# the given prefix
|
|
100
|
+
#
|
|
101
|
+
# Maps to `--prefix=<prefix>`.
|
|
102
|
+
#
|
|
103
|
+
# @option options [Boolean, nil] :u (nil) after a successful merge,
|
|
104
|
+
# update the files in the work tree with the result
|
|
105
|
+
#
|
|
106
|
+
# @option options [Boolean, nil] :i (nil) disable the check with the
|
|
107
|
+
# working tree, meant for creating a merge of trees not directly
|
|
108
|
+
# related to the current working tree status
|
|
109
|
+
#
|
|
110
|
+
# @option options [Boolean, nil] :dry_run (nil) check if the command
|
|
111
|
+
# would error out, without updating the index or files for real
|
|
112
|
+
#
|
|
113
|
+
# Alias: `:n`
|
|
114
|
+
#
|
|
115
|
+
# @option options [Boolean, nil] :v (nil) show the progress of checking
|
|
116
|
+
# files out
|
|
117
|
+
#
|
|
118
|
+
# @option options [String] :index_output (nil) write the resulting
|
|
119
|
+
# index in the named file instead of `$GIT_INDEX_FILE`
|
|
120
|
+
#
|
|
121
|
+
# Maps to `--index-output=<file>`.
|
|
122
|
+
#
|
|
123
|
+
# @option options [Boolean, nil] :recurse_submodules (nil) update the
|
|
124
|
+
# content of all active submodules according to the commit
|
|
125
|
+
# recorded in the superproject (`--recurse-submodules`)
|
|
126
|
+
#
|
|
127
|
+
# @option options [Boolean, nil] :no_recurse_submodules (nil) disable
|
|
128
|
+
# recursive submodule update (`--no-recurse-submodules`)
|
|
129
|
+
#
|
|
130
|
+
# @option options [Boolean, nil] :no_sparse_checkout (nil) disable
|
|
131
|
+
# sparse checkout support even if `core.sparseCheckout` is true
|
|
132
|
+
#
|
|
133
|
+
# @option options [Boolean, nil] :empty (nil) empty the index instead of
|
|
134
|
+
# reading tree object(s)
|
|
135
|
+
#
|
|
136
|
+
# @option options [Boolean, nil] :quiet (nil) suppress feedback messages
|
|
137
|
+
#
|
|
138
|
+
# Alias: `:q`
|
|
139
|
+
#
|
|
140
|
+
# @return [Git::CommandLineResult] the result of calling
|
|
141
|
+
# `git read-tree`
|
|
142
|
+
#
|
|
143
|
+
# @raise [ArgumentError] if unsupported options are provided
|
|
144
|
+
#
|
|
145
|
+
# @raise [Git::FailedError] if git exits with a non-zero exit
|
|
146
|
+
# status
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
end
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'git/commands/base'
|
|
4
|
+
|
|
5
|
+
module Git
|
|
6
|
+
module Commands
|
|
7
|
+
module Remote
|
|
8
|
+
# `git remote add` command
|
|
9
|
+
#
|
|
10
|
+
# Adds a new remote to the repository, associating a name with a URL and
|
|
11
|
+
# configuring how tracking branches and tags are handled.
|
|
12
|
+
#
|
|
13
|
+
# @example Add a remote with a name and URL
|
|
14
|
+
# add = Git::Commands::Remote::Add.new(execution_context)
|
|
15
|
+
# add.call('origin', 'https://example.com/repo.git')
|
|
16
|
+
#
|
|
17
|
+
# @example Add a remote and immediately fetch
|
|
18
|
+
# add = Git::Commands::Remote::Add.new(execution_context)
|
|
19
|
+
# add.call('upstream', 'https://example.com/upstream.git', fetch: true)
|
|
20
|
+
#
|
|
21
|
+
# @example Track a specific branch and disable tag import
|
|
22
|
+
# add = Git::Commands::Remote::Add.new(execution_context)
|
|
23
|
+
# add.call('origin', 'https://example.com/repo.git', track: 'main', no_tags: 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 Add < Git::Commands::Base
|
|
34
|
+
arguments do
|
|
35
|
+
literal 'remote'
|
|
36
|
+
literal 'add'
|
|
37
|
+
value_option %i[track t], repeatable: true
|
|
38
|
+
value_option %i[master m]
|
|
39
|
+
flag_option %i[fetch f]
|
|
40
|
+
flag_option :tags, negatable: true
|
|
41
|
+
value_option :mirror, inline: true
|
|
42
|
+
|
|
43
|
+
end_of_options
|
|
44
|
+
|
|
45
|
+
operand :name, required: true
|
|
46
|
+
operand :url, required: true
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# @!method call(*, **)
|
|
50
|
+
#
|
|
51
|
+
# @overload call(name, url, **options)
|
|
52
|
+
#
|
|
53
|
+
# Execute the `git remote add` command
|
|
54
|
+
#
|
|
55
|
+
# @param name [String] the remote name to create
|
|
56
|
+
#
|
|
57
|
+
# @param url [String] the remote URL to configure
|
|
58
|
+
#
|
|
59
|
+
# @param options [Hash] command options
|
|
60
|
+
#
|
|
61
|
+
# @option options [String, Array<String>] :track (nil) track only the given branch(es) during fetch
|
|
62
|
+
#
|
|
63
|
+
# Accepts a single branch name or an array; each value causes a separate `--track` flag.
|
|
64
|
+
#
|
|
65
|
+
# Alias: :t
|
|
66
|
+
#
|
|
67
|
+
# @option options [String] :master (nil) set the remote HEAD symbolic ref to the given branch
|
|
68
|
+
#
|
|
69
|
+
# Alias: :m
|
|
70
|
+
#
|
|
71
|
+
# @option options [Boolean, nil] :fetch (nil) fetch the remote immediately after adding it
|
|
72
|
+
#
|
|
73
|
+
# Alias: :f
|
|
74
|
+
#
|
|
75
|
+
# @option options [Boolean, nil] :tags (nil) import all tags from the remote (`--tags`)
|
|
76
|
+
#
|
|
77
|
+
# @option options [Boolean, nil] :no_tags (nil) disable importing tags from the remote (`--no-tags`)
|
|
78
|
+
#
|
|
79
|
+
# @option options [String] :mirror (nil) set mirror mode
|
|
80
|
+
#
|
|
81
|
+
# Common values are `'fetch'` and `'push'`.
|
|
82
|
+
#
|
|
83
|
+
# @return [Git::CommandLineResult] the result of calling `git remote add`
|
|
84
|
+
#
|
|
85
|
+
# @raise [ArgumentError] if unsupported options are provided
|
|
86
|
+
#
|
|
87
|
+
# @raise [Git::FailedError] if git exits with a non-zero exit status
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
end
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'git/commands/base'
|
|
4
|
+
|
|
5
|
+
module Git
|
|
6
|
+
module Commands
|
|
7
|
+
module Remote
|
|
8
|
+
# `git remote get-url` command
|
|
9
|
+
#
|
|
10
|
+
# Retrieves the fetch or push URL configured for the named remote.
|
|
11
|
+
#
|
|
12
|
+
# @example Retrieve the fetch URL for a remote
|
|
13
|
+
# get_url = Git::Commands::Remote::GetUrl.new(execution_context)
|
|
14
|
+
# get_url.call('origin')
|
|
15
|
+
#
|
|
16
|
+
# @example Retrieve the push URL for a remote
|
|
17
|
+
# get_url = Git::Commands::Remote::GetUrl.new(execution_context)
|
|
18
|
+
# get_url.call('origin', push: true)
|
|
19
|
+
#
|
|
20
|
+
# @example Retrieve all configured URLs for a remote
|
|
21
|
+
# get_url = Git::Commands::Remote::GetUrl.new(execution_context)
|
|
22
|
+
# get_url.call('origin', all: 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 GetUrl < Git::Commands::Base
|
|
33
|
+
arguments do
|
|
34
|
+
literal 'remote'
|
|
35
|
+
literal 'get-url'
|
|
36
|
+
flag_option :push
|
|
37
|
+
flag_option :all
|
|
38
|
+
|
|
39
|
+
end_of_options
|
|
40
|
+
|
|
41
|
+
operand :name, required: true
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# @!method call(*, **)
|
|
45
|
+
#
|
|
46
|
+
# @overload call(name, **options)
|
|
47
|
+
#
|
|
48
|
+
# Execute the `git remote get-url` command
|
|
49
|
+
#
|
|
50
|
+
# @param name [String] the remote name to query
|
|
51
|
+
#
|
|
52
|
+
# @param options [Hash] command options
|
|
53
|
+
#
|
|
54
|
+
# @option options [Boolean, nil] :push (nil) query push URLs instead of fetch URLs
|
|
55
|
+
#
|
|
56
|
+
# @option options [Boolean, nil] :all (nil) return all configured URLs instead of only the first one
|
|
57
|
+
#
|
|
58
|
+
# @return [Git::CommandLineResult] the result of calling `git remote get-url`
|
|
59
|
+
#
|
|
60
|
+
# @raise [ArgumentError] if unsupported options are provided
|
|
61
|
+
#
|
|
62
|
+
# @raise [Git::FailedError] if git exits with a non-zero exit status
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'git/commands/base'
|
|
4
|
+
|
|
5
|
+
module Git
|
|
6
|
+
module Commands
|
|
7
|
+
module Remote
|
|
8
|
+
# `git remote` command (list remotes)
|
|
9
|
+
#
|
|
10
|
+
# Lists all configured remote connections.
|
|
11
|
+
#
|
|
12
|
+
# @example List all remotes
|
|
13
|
+
# list = Git::Commands::Remote::List.new(execution_context)
|
|
14
|
+
# list.call
|
|
15
|
+
#
|
|
16
|
+
# @example List remotes with URLs
|
|
17
|
+
# list = Git::Commands::Remote::List.new(execution_context)
|
|
18
|
+
# list.call(verbose: 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 List < Git::Commands::Base
|
|
29
|
+
arguments do
|
|
30
|
+
literal 'remote'
|
|
31
|
+
flag_option %i[verbose v]
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# @!method call(*, **)
|
|
35
|
+
#
|
|
36
|
+
# @overload call(**options)
|
|
37
|
+
#
|
|
38
|
+
# Execute the `git remote` command
|
|
39
|
+
#
|
|
40
|
+
# @param options [Hash] command options
|
|
41
|
+
#
|
|
42
|
+
# @option options [Boolean, nil] :verbose (nil) show remote URLs alongside remote names
|
|
43
|
+
#
|
|
44
|
+
# Alias: :v
|
|
45
|
+
#
|
|
46
|
+
# @return [Git::CommandLineResult] the result of calling `git remote`
|
|
47
|
+
#
|
|
48
|
+
# @raise [ArgumentError] if unsupported options are provided
|
|
49
|
+
#
|
|
50
|
+
# @raise [Git::FailedError] if git exits with a non-zero exit status
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'git/commands/base'
|
|
4
|
+
|
|
5
|
+
module Git
|
|
6
|
+
module Commands
|
|
7
|
+
module Remote
|
|
8
|
+
# `git remote prune` command
|
|
9
|
+
#
|
|
10
|
+
# Deletes stale remote-tracking refs that no longer exist on the named remote.
|
|
11
|
+
#
|
|
12
|
+
# @example Dry-run to preview which refs would be pruned
|
|
13
|
+
# prune = Git::Commands::Remote::Prune.new(execution_context)
|
|
14
|
+
# prune.call('origin', dry_run: true)
|
|
15
|
+
#
|
|
16
|
+
# @example Prune stale tracking refs for a remote
|
|
17
|
+
# prune = Git::Commands::Remote::Prune.new(execution_context)
|
|
18
|
+
# prune.call('origin')
|
|
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 Prune < Git::Commands::Base
|
|
29
|
+
arguments do
|
|
30
|
+
literal 'remote'
|
|
31
|
+
literal 'prune'
|
|
32
|
+
flag_option %i[dry_run n]
|
|
33
|
+
|
|
34
|
+
end_of_options
|
|
35
|
+
|
|
36
|
+
operand :name, repeatable: true, required: true
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# @!method call(*, **)
|
|
40
|
+
#
|
|
41
|
+
# @overload call(*name, **options)
|
|
42
|
+
#
|
|
43
|
+
# Prune stale remote-tracking refs for one or more remotes
|
|
44
|
+
#
|
|
45
|
+
# @param name [Array<String>] one or more remote names to prune
|
|
46
|
+
#
|
|
47
|
+
# @param options [Hash] command options
|
|
48
|
+
#
|
|
49
|
+
# @option options [Boolean, nil] :dry_run (nil) report what would be pruned without deleting refs
|
|
50
|
+
#
|
|
51
|
+
# Alias: :n
|
|
52
|
+
#
|
|
53
|
+
# @return [Git::CommandLineResult] the result of calling `git remote prune`
|
|
54
|
+
#
|
|
55
|
+
# @raise [ArgumentError] if unsupported options are provided
|
|
56
|
+
#
|
|
57
|
+
# @raise [Git::FailedError] if git exits with a non-zero exit status
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|