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.
- checksums.yaml +4 -4
- data/.yardopts +5 -1
- data/AI_POLICY.md +24 -0
- data/CHANGELOG.md +689 -0
- data/CODE_OF_CONDUCT.md +25 -0
- data/CONTRIBUTING.md +1175 -97
- data/GOVERNANCE.md +106 -0
- data/LICENSE +1 -1
- data/MAINTAINERS.md +17 -4
- data/README.md +476 -320
- data/UPGRADING.md +1138 -0
- data/git.gemspec +124 -36
- data/lib/git/author.rb +39 -7
- data/lib/git/author_info.rb +66 -0
- data/lib/git/branch.rb +615 -65
- data/lib/git/branch_delete_failure.rb +34 -0
- data/lib/git/branch_delete_result.rb +66 -0
- data/lib/git/branch_info.rb +237 -0
- data/lib/git/branches.rb +167 -44
- data/lib/git/command_line/base.rb +247 -0
- data/lib/git/command_line/capturing.rb +308 -0
- data/lib/git/command_line/result.rb +88 -0
- data/lib/git/command_line/streaming.rb +236 -0
- data/lib/git/command_line.rb +52 -0
- data/lib/git/commands/add.rb +139 -0
- data/lib/git/commands/am/abort.rb +43 -0
- data/lib/git/commands/am/apply.rb +263 -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 +49 -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 +242 -0
- data/lib/git/commands/archive/list_formats.rb +46 -0
- data/lib/git/commands/archive.rb +145 -0
- data/lib/git/commands/arguments.rb +4521 -0
- data/lib/git/commands/base.rb +502 -0
- data/lib/git/commands/branch/copy.rb +102 -0
- data/lib/git/commands/branch/create.rb +177 -0
- data/lib/git/commands/branch/delete.rb +88 -0
- data/lib/git/commands/branch/list.rb +178 -0
- data/lib/git/commands/branch/move.rb +102 -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 +53 -0
- data/lib/git/commands/branch.rb +34 -0
- data/lib/git/commands/cat_file/batch.rb +385 -0
- data/lib/git/commands/cat_file/filtered.rb +105 -0
- data/lib/git/commands/cat_file/raw.rb +271 -0
- data/lib/git/commands/cat_file.rb +49 -0
- data/lib/git/commands/checkout/branch.rb +153 -0
- data/lib/git/commands/checkout/files.rb +116 -0
- data/lib/git/commands/checkout.rb +38 -0
- data/lib/git/commands/checkout_index.rb +106 -0
- data/lib/git/commands/clean.rb +102 -0
- data/lib/git/commands/clone.rb +241 -0
- data/lib/git/commands/commit.rb +273 -0
- data/lib/git/commands/commit_tree.rb +101 -0
- data/lib/git/commands/config_option_syntax/add.rb +86 -0
- data/lib/git/commands/config_option_syntax/get.rb +121 -0
- data/lib/git/commands/config_option_syntax/get_all.rb +118 -0
- data/lib/git/commands/config_option_syntax/get_color.rb +95 -0
- data/lib/git/commands/config_option_syntax/get_color_bool.rb +96 -0
- data/lib/git/commands/config_option_syntax/get_regexp.rb +119 -0
- data/lib/git/commands/config_option_syntax/get_urlmatch.rb +111 -0
- data/lib/git/commands/config_option_syntax/list.rb +111 -0
- data/lib/git/commands/config_option_syntax/remove_section.rb +79 -0
- data/lib/git/commands/config_option_syntax/rename_section.rb +83 -0
- data/lib/git/commands/config_option_syntax/replace_all.rb +109 -0
- data/lib/git/commands/config_option_syntax/set.rb +119 -0
- data/lib/git/commands/config_option_syntax/unset.rb +92 -0
- data/lib/git/commands/config_option_syntax/unset_all.rb +94 -0
- data/lib/git/commands/config_option_syntax.rb +56 -0
- data/lib/git/commands/describe.rb +156 -0
- data/lib/git/commands/diff.rb +657 -0
- data/lib/git/commands/diff_files.rb +519 -0
- data/lib/git/commands/diff_index.rb +499 -0
- data/lib/git/commands/fetch.rb +354 -0
- data/lib/git/commands/fsck.rb +138 -0
- data/lib/git/commands/gc.rb +134 -0
- data/lib/git/commands/grep.rb +339 -0
- data/lib/git/commands/init.rb +101 -0
- data/lib/git/commands/log.rb +634 -0
- data/lib/git/commands/ls_files.rb +195 -0
- data/lib/git/commands/ls_remote.rb +161 -0
- data/lib/git/commands/ls_tree.rb +135 -0
- data/lib/git/commands/maintenance/register.rb +77 -0
- data/lib/git/commands/maintenance/run.rb +109 -0
- data/lib/git/commands/maintenance/start.rb +71 -0
- data/lib/git/commands/maintenance/stop.rb +60 -0
- data/lib/git/commands/maintenance/unregister.rb +84 -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 +250 -0
- data/lib/git/commands/merge.rb +28 -0
- data/lib/git/commands/merge_base.rb +91 -0
- data/lib/git/commands/mv.rb +82 -0
- data/lib/git/commands/name_rev.rb +119 -0
- data/lib/git/commands/pull.rb +382 -0
- data/lib/git/commands/push.rb +251 -0
- data/lib/git/commands/read_tree.rb +154 -0
- data/lib/git/commands/remote/add.rb +96 -0
- data/lib/git/commands/remote/get_url.rb +68 -0
- data/lib/git/commands/remote/list.rb +56 -0
- data/lib/git/commands/remote/prune.rb +63 -0
- data/lib/git/commands/remote/remove.rb +52 -0
- data/lib/git/commands/remote/rename.rb +76 -0
- data/lib/git/commands/remote/set_branches.rb +70 -0
- data/lib/git/commands/remote/set_head.rb +89 -0
- data/lib/git/commands/remote/set_url.rb +78 -0
- data/lib/git/commands/remote/set_url_add.rb +70 -0
- data/lib/git/commands/remote/set_url_delete.rb +71 -0
- data/lib/git/commands/remote/show.rb +77 -0
- data/lib/git/commands/remote/update.rb +79 -0
- data/lib/git/commands/remote.rb +42 -0
- data/lib/git/commands/repack.rb +281 -0
- data/lib/git/commands/reset.rb +154 -0
- data/lib/git/commands/rev_parse.rb +304 -0
- data/lib/git/commands/revert/abort.rb +45 -0
- data/lib/git/commands/revert/continue.rb +62 -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 +158 -0
- data/lib/git/commands/revert.rb +29 -0
- data/lib/git/commands/rm.rb +113 -0
- data/lib/git/commands/show.rb +632 -0
- data/lib/git/commands/show_ref/exclude_existing.rb +119 -0
- data/lib/git/commands/show_ref/exists.rb +80 -0
- data/lib/git/commands/show_ref/list.rb +149 -0
- data/lib/git/commands/show_ref/verify.rb +122 -0
- data/lib/git/commands/show_ref.rb +42 -0
- data/lib/git/commands/stash/apply.rb +81 -0
- data/lib/git/commands/stash/branch.rb +67 -0
- data/lib/git/commands/stash/clear.rb +43 -0
- data/lib/git/commands/stash/create.rb +60 -0
- data/lib/git/commands/stash/drop.rb +73 -0
- data/lib/git/commands/stash/list.rb +43 -0
- data/lib/git/commands/stash/pop.rb +87 -0
- data/lib/git/commands/stash/push.rb +112 -0
- data/lib/git/commands/stash/show.rb +158 -0
- data/lib/git/commands/stash/store.rb +72 -0
- data/lib/git/commands/stash.rb +38 -0
- data/lib/git/commands/status.rb +174 -0
- data/lib/git/commands/symbolic_ref/delete.rb +72 -0
- data/lib/git/commands/symbolic_ref/read.rb +99 -0
- data/lib/git/commands/symbolic_ref/update.rb +79 -0
- data/lib/git/commands/symbolic_ref.rb +38 -0
- data/lib/git/commands/tag/create.rb +142 -0
- data/lib/git/commands/tag/delete.rb +57 -0
- data/lib/git/commands/tag/list.rb +146 -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 +145 -0
- data/lib/git/commands/update_ref/delete.rb +90 -0
- data/lib/git/commands/update_ref/update.rb +103 -0
- data/lib/git/commands/update_ref.rb +42 -0
- data/lib/git/commands/version.rb +60 -0
- data/lib/git/commands/worktree/add.rb +139 -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 +88 -0
- data/lib/git/config.rb +72 -5
- data/lib/git/config_entry_info.rb +106 -0
- data/lib/git/configuring.rb +795 -0
- data/lib/git/detached_head_info.rb +57 -0
- data/lib/git/diff.rb +437 -86
- data/lib/git/diff_file_numstat_info.rb +31 -0
- data/lib/git/diff_file_patch_info.rb +136 -0
- data/lib/git/diff_file_raw_info.rb +129 -0
- data/lib/git/diff_info.rb +162 -0
- data/lib/git/diff_path_status.rb +107 -0
- data/lib/git/diff_result.rb +34 -0
- data/lib/git/diff_stats.rb +111 -0
- data/lib/git/dirstat_info.rb +102 -0
- data/lib/git/encoding_utils.rb +32 -1
- data/lib/git/errors.rb +285 -0
- data/lib/git/escaped_path.rb +57 -5
- data/lib/git/execution_context/global.rb +31 -0
- data/lib/git/execution_context/repository.rb +151 -0
- data/lib/git/execution_context.rb +559 -0
- data/lib/git/factories.rb +813 -0
- data/lib/git/file_ref.rb +77 -0
- data/lib/git/fsck_object.rb +56 -0
- data/lib/git/fsck_result.rb +132 -0
- data/lib/git/log.rb +306 -90
- data/lib/git/object.rb +563 -141
- data/lib/git/parsers/branch.rb +240 -0
- data/lib/git/parsers/cat_file.rb +111 -0
- data/lib/git/parsers/config_entry.rb +110 -0
- data/lib/git/parsers/diff.rb +792 -0
- data/lib/git/parsers/fsck.rb +144 -0
- data/lib/git/parsers/grep.rb +42 -0
- data/lib/git/parsers/ls_remote.rb +79 -0
- data/lib/git/parsers/ls_tree.rb +58 -0
- data/lib/git/parsers/remote.rb +162 -0
- data/lib/git/parsers/stash.rb +292 -0
- data/lib/git/parsers/status.rb +251 -0
- data/lib/git/parsers/tag.rb +341 -0
- data/lib/git/parsers/worktree.rb +185 -0
- data/lib/git/path_resolver.rb +206 -0
- data/lib/git/remote.rb +165 -12
- data/lib/git/remote_info.rb +203 -0
- data/lib/git/repository/branching.rb +964 -0
- data/lib/git/repository/committing.rb +246 -0
- data/lib/git/repository/context_helpers.rb +293 -0
- data/lib/git/repository/diffing.rb +785 -0
- data/lib/git/repository/inspecting.rb +252 -0
- data/lib/git/repository/logging.rb +410 -0
- data/lib/git/repository/maintenance.rb +65 -0
- data/lib/git/repository/merging.rb +451 -0
- data/lib/git/repository/object_operations.rb +1551 -0
- data/lib/git/repository/remote_operations.rb +984 -0
- data/lib/git/repository/shared_private.rb +120 -0
- data/lib/git/repository/staging.rb +587 -0
- data/lib/git/repository/stashing.rb +623 -0
- data/lib/git/repository/status_operations.rb +249 -0
- data/lib/git/repository/worktree_operations.rb +339 -0
- data/lib/git/repository.rb +484 -2
- data/lib/git/stash.rb +109 -12
- data/lib/git/stash_info.rb +102 -0
- data/lib/git/stashes.rb +169 -26
- data/lib/git/status.rb +308 -122
- data/lib/git/status_file_info.rb +258 -0
- data/lib/git/status_info.rb +189 -0
- data/lib/git/tag_delete_failure.rb +34 -0
- data/lib/git/tag_delete_result.rb +66 -0
- data/lib/git/tag_info.rb +99 -0
- data/lib/git/url.rb +15 -8
- data/lib/git/version.rb +113 -2
- data/lib/git/version_constraint.rb +85 -0
- data/lib/git/worktree.rb +150 -8
- data/lib/git/worktree_info.rb +128 -0
- data/lib/git/worktrees.rb +118 -13
- data/lib/git.rb +632 -234
- metadata +369 -54
- data/.github/stale.yml +0 -25
- data/.github/workflows/continuous_integration.yml +0 -49
- data/.gitignore +0 -10
- data/Dockerfile.changelog-rs +0 -12
- data/Gemfile +0 -5
- data/ISSUE_TEMPLATE.md +0 -15
- data/PULL_REQUEST_TEMPLATE.md +0 -9
- data/RELEASING.md +0 -70
- data/Rakefile +0 -60
- data/lib/git/base/factory.rb +0 -99
- data/lib/git/base.rb +0 -711
- data/lib/git/command_line_result.rb +0 -86
- data/lib/git/failed_error.rb +0 -53
- data/lib/git/git_execute_error.rb +0 -7
- data/lib/git/index.rb +0 -5
- data/lib/git/lib.rb +0 -1328
- data/lib/git/path.rb +0 -31
- data/lib/git/signaled_error.rb +0 -50
- data/lib/git/working_directory.rb +0 -4
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'git/commands/base'
|
|
4
|
+
|
|
5
|
+
module Git
|
|
6
|
+
module Commands
|
|
7
|
+
module ConfigOptionSyntax
|
|
8
|
+
# Retrieve an ANSI color string from config
|
|
9
|
+
#
|
|
10
|
+
# Wraps `git config --get-color` to look up a color configuration
|
|
11
|
+
# and output the ANSI escape sequence for that color.
|
|
12
|
+
#
|
|
13
|
+
# @example Get a color config value
|
|
14
|
+
# cmd = Git::Commands::ConfigOptionSyntax::GetColor.new(lib)
|
|
15
|
+
# cmd.call('color.diff.new')
|
|
16
|
+
#
|
|
17
|
+
# @example Get a color config value with a default
|
|
18
|
+
# cmd = Git::Commands::ConfigOptionSyntax::GetColor.new(lib)
|
|
19
|
+
# cmd.call('color.diff.new', 'green')
|
|
20
|
+
#
|
|
21
|
+
# @note `arguments` block audited against https://git-scm.com/docs/git-config/2.53.0
|
|
22
|
+
#
|
|
23
|
+
# @see Git::Commands::ConfigOptionSyntax
|
|
24
|
+
#
|
|
25
|
+
# @see https://git-scm.com/docs/git-config git-config documentation
|
|
26
|
+
#
|
|
27
|
+
# @api private
|
|
28
|
+
#
|
|
29
|
+
class GetColor < Git::Commands::Base
|
|
30
|
+
arguments do
|
|
31
|
+
literal 'config'
|
|
32
|
+
literal '--get-color'
|
|
33
|
+
|
|
34
|
+
# File-scope options
|
|
35
|
+
flag_option :global
|
|
36
|
+
flag_option :system
|
|
37
|
+
flag_option :local
|
|
38
|
+
flag_option :worktree
|
|
39
|
+
value_option %i[file f]
|
|
40
|
+
value_option :blob
|
|
41
|
+
|
|
42
|
+
# General read options
|
|
43
|
+
flag_option :includes, negatable: true
|
|
44
|
+
|
|
45
|
+
# Operands
|
|
46
|
+
end_of_options
|
|
47
|
+
operand :name, required: true
|
|
48
|
+
operand :default
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# @overload call(name, default = nil, **options)
|
|
52
|
+
#
|
|
53
|
+
# Execute the `git config --get-color` command
|
|
54
|
+
#
|
|
55
|
+
# @param name [String] the color config key name to look up
|
|
56
|
+
#
|
|
57
|
+
# @param default [String, nil] (nil) fallback color when the key is not set
|
|
58
|
+
#
|
|
59
|
+
# @param options [Hash] command options
|
|
60
|
+
#
|
|
61
|
+
# @option options [Boolean, nil] :global (nil) read from global config (`~/.gitconfig`)
|
|
62
|
+
#
|
|
63
|
+
# @option options [Boolean, nil] :system (nil) read from system config
|
|
64
|
+
#
|
|
65
|
+
# @option options [Boolean, nil] :local (nil) read from repository config (`.git/config`)
|
|
66
|
+
#
|
|
67
|
+
# @option options [Boolean, nil] :worktree (nil) read from worktree config
|
|
68
|
+
#
|
|
69
|
+
# @option options [String] :file (nil) read from the specified file
|
|
70
|
+
#
|
|
71
|
+
# Alias: :f
|
|
72
|
+
#
|
|
73
|
+
# @option options [String] :blob (nil) read from the specified blob
|
|
74
|
+
#
|
|
75
|
+
# @option options [Boolean, nil] :includes (nil) respect include directives in config files
|
|
76
|
+
# (`--includes`)
|
|
77
|
+
#
|
|
78
|
+
# @option options [Boolean, nil] :no_includes (nil) suppress include directive processing
|
|
79
|
+
# (`--no-includes`)
|
|
80
|
+
#
|
|
81
|
+
# @return [Git::CommandLine::Result] the result of calling `git config --get-color`
|
|
82
|
+
#
|
|
83
|
+
# @raise [ArgumentError] if unsupported options are provided
|
|
84
|
+
#
|
|
85
|
+
# @raise [Git::FailedError] if git exits with a non-zero exit status
|
|
86
|
+
#
|
|
87
|
+
# @api public
|
|
88
|
+
#
|
|
89
|
+
def call(*, **)
|
|
90
|
+
super
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'git/commands/base'
|
|
4
|
+
|
|
5
|
+
module Git
|
|
6
|
+
module Commands
|
|
7
|
+
module ConfigOptionSyntax
|
|
8
|
+
# Query whether color output is enabled for a config key
|
|
9
|
+
#
|
|
10
|
+
# Wraps `git config --get-colorbool` to check whether color output
|
|
11
|
+
# should be used. This command has no subcommand equivalent even in
|
|
12
|
+
# git 2.46.0 — it exists only in the option-syntax interface.
|
|
13
|
+
#
|
|
14
|
+
# @example Query whether color is enabled for diff
|
|
15
|
+
# cmd = Git::Commands::ConfigOptionSyntax::GetColorBool.new(lib)
|
|
16
|
+
# cmd.call('color.diff')
|
|
17
|
+
#
|
|
18
|
+
# @example Query with explicit stdout-is-tty hint
|
|
19
|
+
# cmd = Git::Commands::ConfigOptionSyntax::GetColorBool.new(lib)
|
|
20
|
+
# cmd.call('color.diff', 'true')
|
|
21
|
+
#
|
|
22
|
+
# @note `arguments` block audited against https://git-scm.com/docs/git-config/2.53.0
|
|
23
|
+
#
|
|
24
|
+
# @see Git::Commands::ConfigOptionSyntax
|
|
25
|
+
#
|
|
26
|
+
# @see https://git-scm.com/docs/git-config git-config documentation
|
|
27
|
+
#
|
|
28
|
+
# @api private
|
|
29
|
+
#
|
|
30
|
+
class GetColorBool < Git::Commands::Base
|
|
31
|
+
arguments do
|
|
32
|
+
literal 'config'
|
|
33
|
+
literal '--get-colorbool'
|
|
34
|
+
|
|
35
|
+
# File-scope options
|
|
36
|
+
flag_option :global
|
|
37
|
+
flag_option :system
|
|
38
|
+
flag_option :local
|
|
39
|
+
flag_option :worktree
|
|
40
|
+
value_option %i[file f]
|
|
41
|
+
value_option :blob
|
|
42
|
+
|
|
43
|
+
# General read options
|
|
44
|
+
flag_option :includes, negatable: true
|
|
45
|
+
|
|
46
|
+
# Operands
|
|
47
|
+
end_of_options
|
|
48
|
+
operand :name, required: true
|
|
49
|
+
operand :stdout_is_tty
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# git config --get-colorbool exits 0 for color=yes, 1 for color=no
|
|
53
|
+
allow_exit_status 0..1
|
|
54
|
+
|
|
55
|
+
# @overload call(name, stdout_is_tty = nil, **options)
|
|
56
|
+
#
|
|
57
|
+
# Execute the `git config --get-colorbool` command
|
|
58
|
+
#
|
|
59
|
+
# @param name [String] the color config key name to query
|
|
60
|
+
#
|
|
61
|
+
# @param stdout_is_tty [String, nil] (nil) hint whether stdout is a TTY (`"true"` or `"false"`)
|
|
62
|
+
#
|
|
63
|
+
# @param options [Hash] command options
|
|
64
|
+
#
|
|
65
|
+
# @option options [Boolean, nil] :global (nil) read from global config (`~/.gitconfig`)
|
|
66
|
+
#
|
|
67
|
+
# @option options [Boolean, nil] :system (nil) read from system config
|
|
68
|
+
#
|
|
69
|
+
# @option options [Boolean, nil] :local (nil) read from repository config (`.git/config`)
|
|
70
|
+
#
|
|
71
|
+
# @option options [Boolean, nil] :worktree (nil) read from worktree config
|
|
72
|
+
#
|
|
73
|
+
# @option options [String] :file (nil) read from the specified file
|
|
74
|
+
#
|
|
75
|
+
# Alias: :f
|
|
76
|
+
#
|
|
77
|
+
# @option options [String] :blob (nil) read from the specified blob
|
|
78
|
+
#
|
|
79
|
+
# @option options [Boolean, nil] :includes (nil) respect include directives in config files (`--includes`)
|
|
80
|
+
#
|
|
81
|
+
# @option options [Boolean, nil] :no_includes (nil) disable include directive processing (`--no-includes`)
|
|
82
|
+
#
|
|
83
|
+
# @return [Git::CommandLine::Result] the result of calling `git config --get-colorbool`
|
|
84
|
+
#
|
|
85
|
+
# @raise [ArgumentError] if unsupported options are provided
|
|
86
|
+
#
|
|
87
|
+
# @raise [Git::FailedError] if git exits outside the allowed range (exit code > 1)
|
|
88
|
+
#
|
|
89
|
+
# @api public
|
|
90
|
+
def call(*, **)
|
|
91
|
+
super
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'git/commands/base'
|
|
4
|
+
|
|
5
|
+
module Git
|
|
6
|
+
module Commands
|
|
7
|
+
module ConfigOptionSyntax
|
|
8
|
+
# Retrieve config entries matching a name regex
|
|
9
|
+
#
|
|
10
|
+
# Wraps `git config --get-regexp` to return all config entries whose
|
|
11
|
+
# key name matches the given regular expression.
|
|
12
|
+
#
|
|
13
|
+
# @example Get all entries matching a pattern
|
|
14
|
+
# cmd = Git::Commands::ConfigOptionSyntax::GetRegexp.new(lib)
|
|
15
|
+
# cmd.call('remote\..*\.url')
|
|
16
|
+
#
|
|
17
|
+
# @example Get matching entries with value filter
|
|
18
|
+
# cmd = Git::Commands::ConfigOptionSyntax::GetRegexp.new(lib)
|
|
19
|
+
# cmd.call('remote\..*\.url', 'github')
|
|
20
|
+
#
|
|
21
|
+
# @note `arguments` block audited against https://git-scm.com/docs/git-config/2.53.0
|
|
22
|
+
#
|
|
23
|
+
# @see Git::Commands::ConfigOptionSyntax
|
|
24
|
+
#
|
|
25
|
+
# @see https://git-scm.com/docs/git-config git-config
|
|
26
|
+
#
|
|
27
|
+
# @api private
|
|
28
|
+
#
|
|
29
|
+
class GetRegexp < Git::Commands::Base
|
|
30
|
+
arguments do
|
|
31
|
+
literal 'config'
|
|
32
|
+
literal '--get-regexp'
|
|
33
|
+
|
|
34
|
+
# File-scope options
|
|
35
|
+
flag_option :global
|
|
36
|
+
flag_option :system
|
|
37
|
+
flag_option :local
|
|
38
|
+
flag_option :worktree
|
|
39
|
+
value_option %i[file f]
|
|
40
|
+
value_option :blob
|
|
41
|
+
|
|
42
|
+
# General read options
|
|
43
|
+
flag_option :includes, negatable: true
|
|
44
|
+
|
|
45
|
+
# Type constraint
|
|
46
|
+
value_option :type, inline: true
|
|
47
|
+
|
|
48
|
+
# Output modifiers
|
|
49
|
+
flag_option :show_origin
|
|
50
|
+
flag_option :show_scope
|
|
51
|
+
flag_option %i[null z]
|
|
52
|
+
flag_option :name_only
|
|
53
|
+
|
|
54
|
+
# Operands
|
|
55
|
+
end_of_options
|
|
56
|
+
operand :name_regex, required: true
|
|
57
|
+
operand :value_regex
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
# git config --get-regexp exits 1 when no match is found (not an error)
|
|
61
|
+
allow_exit_status 0..1
|
|
62
|
+
|
|
63
|
+
# @overload call(name_regex, value_regex = nil, **options)
|
|
64
|
+
#
|
|
65
|
+
# Execute the `git config --get-regexp` command
|
|
66
|
+
#
|
|
67
|
+
# @param name_regex [String] regex pattern to match config key names
|
|
68
|
+
#
|
|
69
|
+
# @param value_regex [String, nil] optional regex to filter values
|
|
70
|
+
#
|
|
71
|
+
# @param options [Hash] command options
|
|
72
|
+
#
|
|
73
|
+
# @option options [Boolean, nil] :global (nil) read from global config (`~/.gitconfig`)
|
|
74
|
+
#
|
|
75
|
+
# @option options [Boolean, nil] :system (nil) read from system config
|
|
76
|
+
#
|
|
77
|
+
# @option options [Boolean, nil] :local (nil) read from repository config (`.git/config`)
|
|
78
|
+
#
|
|
79
|
+
# @option options [Boolean, nil] :worktree (nil) read from worktree config
|
|
80
|
+
#
|
|
81
|
+
# @option options [String] :file (nil) read from the specified file
|
|
82
|
+
#
|
|
83
|
+
# Alias: :f
|
|
84
|
+
#
|
|
85
|
+
# @option options [String] :blob (nil) read from the specified blob
|
|
86
|
+
#
|
|
87
|
+
# @option options [Boolean, nil] :includes (nil) respect include directives in
|
|
88
|
+
# config files (`--includes`)
|
|
89
|
+
#
|
|
90
|
+
# @option options [Boolean, nil] :no_includes (nil) ignore include directives in
|
|
91
|
+
# config files (`--no-includes`)
|
|
92
|
+
#
|
|
93
|
+
# @option options [String] :type (nil) ensure values conform to the given type
|
|
94
|
+
#
|
|
95
|
+
# @option options [Boolean, nil] :show_origin (nil) show the origin of each config entry
|
|
96
|
+
#
|
|
97
|
+
# @option options [Boolean, nil] :show_scope (nil) show the scope of each config entry
|
|
98
|
+
#
|
|
99
|
+
# @option options [Boolean, nil] :null (nil) terminate values with NUL byte instead of newline
|
|
100
|
+
#
|
|
101
|
+
# Alias: :z
|
|
102
|
+
#
|
|
103
|
+
# @option options [Boolean, nil] :name_only (nil) output only the names of config keys
|
|
104
|
+
#
|
|
105
|
+
# @return [Git::CommandLine::Result] the result of calling `git config --get-regexp`
|
|
106
|
+
#
|
|
107
|
+
# @raise [ArgumentError] if unsupported options are provided
|
|
108
|
+
#
|
|
109
|
+
# @raise [Git::FailedError] if git exits outside the allowed range (exit code > 1)
|
|
110
|
+
#
|
|
111
|
+
# @api public
|
|
112
|
+
#
|
|
113
|
+
def call(*, **)
|
|
114
|
+
super
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
end
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'git/commands/base'
|
|
4
|
+
|
|
5
|
+
module Git
|
|
6
|
+
module Commands
|
|
7
|
+
module ConfigOptionSyntax
|
|
8
|
+
# Retrieve config values matching a URL
|
|
9
|
+
#
|
|
10
|
+
# Wraps `git config --get-urlmatch` to return config entries whose
|
|
11
|
+
# key name matches the given name and whose URL pattern matches the
|
|
12
|
+
# given URL.
|
|
13
|
+
#
|
|
14
|
+
# @example Get URL-matched config
|
|
15
|
+
# cmd = Git::Commands::ConfigOptionSyntax::GetUrlmatch.new(lib)
|
|
16
|
+
# cmd.call('http', 'https://example.com')
|
|
17
|
+
#
|
|
18
|
+
# @note `arguments` block audited against https://git-scm.com/docs/git-config/2.53.0
|
|
19
|
+
#
|
|
20
|
+
# @see Git::Commands::ConfigOptionSyntax
|
|
21
|
+
#
|
|
22
|
+
# @see https://git-scm.com/docs/git-config git-config
|
|
23
|
+
#
|
|
24
|
+
# @api private
|
|
25
|
+
#
|
|
26
|
+
class GetUrlmatch < Git::Commands::Base
|
|
27
|
+
arguments do
|
|
28
|
+
literal 'config'
|
|
29
|
+
literal '--get-urlmatch'
|
|
30
|
+
|
|
31
|
+
# File-scope options
|
|
32
|
+
flag_option :global
|
|
33
|
+
flag_option :system
|
|
34
|
+
flag_option :local
|
|
35
|
+
flag_option :worktree
|
|
36
|
+
value_option %i[file f]
|
|
37
|
+
value_option :blob
|
|
38
|
+
|
|
39
|
+
# Type constraint
|
|
40
|
+
value_option :type, inline: true
|
|
41
|
+
|
|
42
|
+
# Output modifier
|
|
43
|
+
flag_option %i[null z]
|
|
44
|
+
|
|
45
|
+
# General read options
|
|
46
|
+
flag_option :includes, negatable: true
|
|
47
|
+
|
|
48
|
+
# Output modifiers
|
|
49
|
+
flag_option :show_scope
|
|
50
|
+
|
|
51
|
+
# Operands
|
|
52
|
+
end_of_options
|
|
53
|
+
operand :name, required: true
|
|
54
|
+
operand :url, required: true
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# git config --get-urlmatch exits 1 when no match is found (not an error)
|
|
58
|
+
allow_exit_status 0..1
|
|
59
|
+
|
|
60
|
+
# @overload call(name, url, **options)
|
|
61
|
+
#
|
|
62
|
+
# Execute the `git config --get-urlmatch` command
|
|
63
|
+
#
|
|
64
|
+
# @param name [String] the config key name (or section prefix) to look up
|
|
65
|
+
#
|
|
66
|
+
# @param url [String] the URL to match against
|
|
67
|
+
#
|
|
68
|
+
# @param options [Hash] command options
|
|
69
|
+
#
|
|
70
|
+
# @option options [Boolean, nil] :global (nil) read from global config (`~/.gitconfig`)
|
|
71
|
+
#
|
|
72
|
+
# @option options [Boolean, nil] :system (nil) read from system config
|
|
73
|
+
#
|
|
74
|
+
# @option options [Boolean, nil] :local (nil) read from repository config (`.git/config`)
|
|
75
|
+
#
|
|
76
|
+
# @option options [Boolean, nil] :worktree (nil) read from worktree config
|
|
77
|
+
#
|
|
78
|
+
# @option options [String] :file (nil) read from the specified file
|
|
79
|
+
#
|
|
80
|
+
# Alias: :f
|
|
81
|
+
#
|
|
82
|
+
# @option options [String] :blob (nil) read from the specified blob
|
|
83
|
+
#
|
|
84
|
+
# @option options [String] :type (nil) ensure values conform to the given type
|
|
85
|
+
#
|
|
86
|
+
# @option options [Boolean, nil] :null (nil) terminate values with NUL byte instead of newline
|
|
87
|
+
#
|
|
88
|
+
# Alias: :z
|
|
89
|
+
#
|
|
90
|
+
# @option options [Boolean, nil] :includes (nil) respect include directives in config files (`--includes`)
|
|
91
|
+
#
|
|
92
|
+
# @option options [Boolean, nil] :no_includes (nil) disable include directives
|
|
93
|
+
# in config files (`--no-includes`)
|
|
94
|
+
#
|
|
95
|
+
# @option options [Boolean, nil] :show_scope (nil) show the scope of each config entry
|
|
96
|
+
#
|
|
97
|
+
# @return [Git::CommandLine::Result] the result of calling `git config --get-urlmatch`
|
|
98
|
+
#
|
|
99
|
+
# @raise [ArgumentError] if unsupported options are provided
|
|
100
|
+
#
|
|
101
|
+
# @raise [Git::FailedError] if git exits outside the allowed range (exit code > 1)
|
|
102
|
+
#
|
|
103
|
+
# @api public
|
|
104
|
+
#
|
|
105
|
+
def call(*, **)
|
|
106
|
+
super
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
end
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'git/commands/base'
|
|
4
|
+
|
|
5
|
+
module Git
|
|
6
|
+
module Commands
|
|
7
|
+
module ConfigOptionSyntax
|
|
8
|
+
# List all config entries
|
|
9
|
+
#
|
|
10
|
+
# Wraps `git config --list` to output all config entries visible
|
|
11
|
+
# from the current scope.
|
|
12
|
+
#
|
|
13
|
+
# @example List all config entries
|
|
14
|
+
# cmd = Git::Commands::ConfigOptionSyntax::List.new(lib)
|
|
15
|
+
# cmd.call
|
|
16
|
+
#
|
|
17
|
+
# @example List global config entries
|
|
18
|
+
# cmd = Git::Commands::ConfigOptionSyntax::List.new(lib)
|
|
19
|
+
# cmd.call(global: true)
|
|
20
|
+
#
|
|
21
|
+
# @example List entries from a specific file
|
|
22
|
+
# cmd = Git::Commands::ConfigOptionSyntax::List.new(lib)
|
|
23
|
+
# cmd.call(file: '/path/to/config')
|
|
24
|
+
#
|
|
25
|
+
# @note `arguments` block audited against https://git-scm.com/docs/git-config/2.53.0
|
|
26
|
+
#
|
|
27
|
+
# @see Git::Commands::ConfigOptionSyntax
|
|
28
|
+
#
|
|
29
|
+
# @see https://git-scm.com/docs/git-config git-config
|
|
30
|
+
#
|
|
31
|
+
# @api private
|
|
32
|
+
#
|
|
33
|
+
class List < Git::Commands::Base
|
|
34
|
+
arguments do
|
|
35
|
+
literal 'config'
|
|
36
|
+
literal '--list'
|
|
37
|
+
|
|
38
|
+
# File-scope options
|
|
39
|
+
flag_option :global
|
|
40
|
+
flag_option :system
|
|
41
|
+
flag_option :local
|
|
42
|
+
flag_option :worktree
|
|
43
|
+
value_option %i[file f]
|
|
44
|
+
value_option :blob
|
|
45
|
+
|
|
46
|
+
# General read options
|
|
47
|
+
flag_option :includes, negatable: true
|
|
48
|
+
|
|
49
|
+
# Output modifiers
|
|
50
|
+
flag_option :show_origin
|
|
51
|
+
flag_option :show_scope
|
|
52
|
+
flag_option %i[null z]
|
|
53
|
+
flag_option :name_only
|
|
54
|
+
|
|
55
|
+
# Type constraint
|
|
56
|
+
value_option :type, inline: true
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# @overload call(**options)
|
|
60
|
+
#
|
|
61
|
+
# Execute the `git config --list` command
|
|
62
|
+
#
|
|
63
|
+
# @param options [Hash] command options
|
|
64
|
+
#
|
|
65
|
+
# @option options [Boolean, nil] :global (nil) list only global config entries
|
|
66
|
+
#
|
|
67
|
+
# @option options [Boolean, nil] :system (nil) list only system config entries
|
|
68
|
+
#
|
|
69
|
+
# @option options [Boolean, nil] :local (nil) list only repository config entries
|
|
70
|
+
#
|
|
71
|
+
# @option options [Boolean, nil] :worktree (nil) list only worktree config entries
|
|
72
|
+
#
|
|
73
|
+
# @option options [String] :file (nil) list entries from the specified file
|
|
74
|
+
#
|
|
75
|
+
# Alias: :f
|
|
76
|
+
#
|
|
77
|
+
# @option options [String] :blob (nil) list entries from the specified blob
|
|
78
|
+
#
|
|
79
|
+
# @option options [Boolean, nil] :includes (nil) respect include directives in config files
|
|
80
|
+
# (`--includes`)
|
|
81
|
+
#
|
|
82
|
+
# @option options [Boolean, nil] :no_includes (nil) suppress include directive processing
|
|
83
|
+
# (`--no-includes`)
|
|
84
|
+
#
|
|
85
|
+
# @option options [Boolean, nil] :show_origin (nil) show the origin of each config entry
|
|
86
|
+
#
|
|
87
|
+
# @option options [Boolean, nil] :show_scope (nil) show the scope of each config entry
|
|
88
|
+
#
|
|
89
|
+
# @option options [Boolean, nil] :null (nil) terminate values with NUL byte instead of newline
|
|
90
|
+
#
|
|
91
|
+
# Alias: :z
|
|
92
|
+
#
|
|
93
|
+
# @option options [Boolean, nil] :name_only (nil) output only the names of config keys
|
|
94
|
+
#
|
|
95
|
+
# @option options [String] :type (nil) ensure values conform to the given type
|
|
96
|
+
#
|
|
97
|
+
# @return [Git::CommandLine::Result] the result of calling `git config --list`
|
|
98
|
+
#
|
|
99
|
+
# @raise [ArgumentError] if unsupported options are provided
|
|
100
|
+
#
|
|
101
|
+
# @raise [Git::FailedError] if git exits with a non-zero exit status
|
|
102
|
+
#
|
|
103
|
+
# @api public
|
|
104
|
+
#
|
|
105
|
+
def call(*, **)
|
|
106
|
+
super
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
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 ConfigOptionSyntax
|
|
8
|
+
# Remove a config section
|
|
9
|
+
#
|
|
10
|
+
# Wraps `git config --remove-section` to remove an entire section
|
|
11
|
+
# from the config file.
|
|
12
|
+
#
|
|
13
|
+
# @example Remove a section
|
|
14
|
+
# cmd = Git::Commands::ConfigOptionSyntax::RemoveSection.new(lib)
|
|
15
|
+
# cmd.call('old-section')
|
|
16
|
+
#
|
|
17
|
+
# @note `arguments` block audited against https://git-scm.com/docs/git-config/2.53.0
|
|
18
|
+
#
|
|
19
|
+
# @see Git::Commands::ConfigOptionSyntax
|
|
20
|
+
#
|
|
21
|
+
# @see https://git-scm.com/docs/git-config git-config
|
|
22
|
+
#
|
|
23
|
+
# @api private
|
|
24
|
+
class RemoveSection < Git::Commands::Base
|
|
25
|
+
arguments do
|
|
26
|
+
literal 'config'
|
|
27
|
+
literal '--remove-section'
|
|
28
|
+
|
|
29
|
+
# File-scope options
|
|
30
|
+
flag_option :global
|
|
31
|
+
flag_option :system
|
|
32
|
+
flag_option :local
|
|
33
|
+
flag_option :worktree
|
|
34
|
+
value_option %i[file f]
|
|
35
|
+
value_option :blob
|
|
36
|
+
|
|
37
|
+
# Operands
|
|
38
|
+
end_of_options
|
|
39
|
+
operand :name, required: true
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# @!method call(*, **options)
|
|
43
|
+
#
|
|
44
|
+
# @param options [Hash] command options
|
|
45
|
+
#
|
|
46
|
+
# @option options [Boolean, nil] :global (nil) command option key; see
|
|
47
|
+
# overload docs for the full option list
|
|
48
|
+
#
|
|
49
|
+
# @overload call(name, **options)
|
|
50
|
+
#
|
|
51
|
+
# Execute the `git config --remove-section` command
|
|
52
|
+
#
|
|
53
|
+
# @param name [String] the section name to remove
|
|
54
|
+
#
|
|
55
|
+
# @param options [Hash] command options
|
|
56
|
+
#
|
|
57
|
+
# @option options [Boolean, nil] :global (nil) remove from global config (`~/.gitconfig`)
|
|
58
|
+
#
|
|
59
|
+
# @option options [Boolean, nil] :system (nil) remove from system config
|
|
60
|
+
#
|
|
61
|
+
# @option options [Boolean, nil] :local (nil) remove from repository config (`.git/config`)
|
|
62
|
+
#
|
|
63
|
+
# @option options [Boolean, nil] :worktree (nil) remove from worktree config
|
|
64
|
+
#
|
|
65
|
+
# @option options [String] :file (nil) remove from the specified file
|
|
66
|
+
#
|
|
67
|
+
# Alias: :f
|
|
68
|
+
#
|
|
69
|
+
# @option options [String] :blob (nil) read from the specified blob
|
|
70
|
+
#
|
|
71
|
+
# @return [Git::CommandLine::Result] the result of calling `git config --remove-section`
|
|
72
|
+
#
|
|
73
|
+
# @raise [ArgumentError] if unsupported options are provided
|
|
74
|
+
#
|
|
75
|
+
# @raise [Git::FailedError] if git exits with a non-zero exit status
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'git/commands/base'
|
|
4
|
+
|
|
5
|
+
module Git
|
|
6
|
+
module Commands
|
|
7
|
+
module ConfigOptionSyntax
|
|
8
|
+
# Rename a config section
|
|
9
|
+
#
|
|
10
|
+
# Wraps `git config --rename-section` to rename a section in the
|
|
11
|
+
# config file.
|
|
12
|
+
#
|
|
13
|
+
# @example Rename a section
|
|
14
|
+
# cmd = Git::Commands::ConfigOptionSyntax::RenameSection.new(lib)
|
|
15
|
+
# cmd.call('old-section', 'new-section')
|
|
16
|
+
#
|
|
17
|
+
# @note `arguments` block audited against https://git-scm.com/docs/git-config/2.53.0
|
|
18
|
+
#
|
|
19
|
+
# @see Git::Commands::ConfigOptionSyntax
|
|
20
|
+
#
|
|
21
|
+
# @see https://git-scm.com/docs/git-config git-config
|
|
22
|
+
#
|
|
23
|
+
# @api private
|
|
24
|
+
#
|
|
25
|
+
class RenameSection < Git::Commands::Base
|
|
26
|
+
arguments do
|
|
27
|
+
literal 'config'
|
|
28
|
+
literal '--rename-section'
|
|
29
|
+
|
|
30
|
+
# File-scope options
|
|
31
|
+
flag_option :global
|
|
32
|
+
flag_option :system
|
|
33
|
+
flag_option :local
|
|
34
|
+
flag_option :worktree
|
|
35
|
+
value_option %i[file f]
|
|
36
|
+
value_option :blob
|
|
37
|
+
|
|
38
|
+
# Operands
|
|
39
|
+
end_of_options
|
|
40
|
+
operand :old_name, required: true
|
|
41
|
+
operand :new_name, required: true
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# @!method call(*, **options)
|
|
45
|
+
#
|
|
46
|
+
# @param options [Hash] command options
|
|
47
|
+
#
|
|
48
|
+
# @option options [Boolean, nil] :global (nil) command option key; see
|
|
49
|
+
# overload docs for the full option list
|
|
50
|
+
#
|
|
51
|
+
# @overload call(old_name, new_name, **options)
|
|
52
|
+
#
|
|
53
|
+
# Execute the `git config --rename-section` command
|
|
54
|
+
#
|
|
55
|
+
# @param old_name [String] the current section name
|
|
56
|
+
#
|
|
57
|
+
# @param new_name [String] the new section name
|
|
58
|
+
#
|
|
59
|
+
# @param options [Hash] command options
|
|
60
|
+
#
|
|
61
|
+
# @option options [Boolean, nil] :global (nil) operate on global config (`~/.gitconfig`)
|
|
62
|
+
#
|
|
63
|
+
# @option options [Boolean, nil] :system (nil) operate on system config
|
|
64
|
+
#
|
|
65
|
+
# @option options [Boolean, nil] :local (nil) operate on repository config (`.git/config`)
|
|
66
|
+
#
|
|
67
|
+
# @option options [Boolean, nil] :worktree (nil) operate on worktree config
|
|
68
|
+
#
|
|
69
|
+
# @option options [String] :file (nil) operate on the specified file
|
|
70
|
+
#
|
|
71
|
+
# Alias: :f
|
|
72
|
+
#
|
|
73
|
+
# @option options [String] :blob (nil) read from the specified blob
|
|
74
|
+
#
|
|
75
|
+
# @return [Git::CommandLine::Result] the result of calling `git config --rename-section`
|
|
76
|
+
#
|
|
77
|
+
# @raise [ArgumentError] if unsupported options are provided
|
|
78
|
+
#
|
|
79
|
+
# @raise [Git::FailedError] if git exits with a non-zero exit status
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|