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,117 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'git/commands/base'
|
|
4
|
+
|
|
5
|
+
module Git
|
|
6
|
+
module Commands
|
|
7
|
+
module ConfigOptionSyntax
|
|
8
|
+
# Retrieve a single config value by exact key name
|
|
9
|
+
#
|
|
10
|
+
# Wraps `git config --get` to return the value of the last-matching
|
|
11
|
+
# config entry for the given key name.
|
|
12
|
+
#
|
|
13
|
+
# @example Get a local config value
|
|
14
|
+
# cmd = Git::Commands::ConfigOptionSyntax::Get.new(lib)
|
|
15
|
+
# cmd.call('user.name')
|
|
16
|
+
#
|
|
17
|
+
# @example Get a global config value
|
|
18
|
+
# cmd = Git::Commands::ConfigOptionSyntax::Get.new(lib)
|
|
19
|
+
# cmd.call('user.name', global: true)
|
|
20
|
+
#
|
|
21
|
+
# @example Get a value with a type constraint
|
|
22
|
+
# cmd = Git::Commands::ConfigOptionSyntax::Get.new(lib)
|
|
23
|
+
# cmd.call('core.bare', type: 'bool')
|
|
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 documentation
|
|
30
|
+
#
|
|
31
|
+
# @api private
|
|
32
|
+
class Get < Git::Commands::Base
|
|
33
|
+
arguments do
|
|
34
|
+
literal 'config'
|
|
35
|
+
literal '--get'
|
|
36
|
+
|
|
37
|
+
# File-scope options
|
|
38
|
+
flag_option :global
|
|
39
|
+
flag_option :system
|
|
40
|
+
flag_option :local
|
|
41
|
+
flag_option :worktree
|
|
42
|
+
value_option %i[file f]
|
|
43
|
+
value_option :blob
|
|
44
|
+
|
|
45
|
+
# General read options
|
|
46
|
+
flag_option :includes, negatable: true
|
|
47
|
+
|
|
48
|
+
# Type constraint
|
|
49
|
+
value_option :type, inline: true
|
|
50
|
+
|
|
51
|
+
# Output modifiers
|
|
52
|
+
flag_option :show_origin
|
|
53
|
+
flag_option :show_scope
|
|
54
|
+
flag_option %i[null z]
|
|
55
|
+
value_option :default
|
|
56
|
+
|
|
57
|
+
# Operands
|
|
58
|
+
end_of_options
|
|
59
|
+
operand :name, required: true
|
|
60
|
+
operand :value_regex
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
# git config --get exits 1 when the key is not found (not an error)
|
|
64
|
+
allow_exit_status 0..1
|
|
65
|
+
|
|
66
|
+
# @!method call(*, **)
|
|
67
|
+
#
|
|
68
|
+
# @overload call(name, value_regex = nil, **options)
|
|
69
|
+
#
|
|
70
|
+
# Execute the `git config --get` command
|
|
71
|
+
#
|
|
72
|
+
# @param name [String] the config key name to look up
|
|
73
|
+
#
|
|
74
|
+
# @param value_regex [String, nil] (nil) optional regex to filter the value
|
|
75
|
+
#
|
|
76
|
+
# @param options [Hash] command options
|
|
77
|
+
#
|
|
78
|
+
# @option options [Boolean, nil] :global (nil) read from global config (`~/.gitconfig`)
|
|
79
|
+
#
|
|
80
|
+
# @option options [Boolean, nil] :system (nil) read from system config
|
|
81
|
+
#
|
|
82
|
+
# @option options [Boolean, nil] :local (nil) read from repository config (`.git/config`)
|
|
83
|
+
#
|
|
84
|
+
# @option options [Boolean, nil] :worktree (nil) read from worktree config
|
|
85
|
+
#
|
|
86
|
+
# @option options [String] :file (nil) read from the specified file
|
|
87
|
+
#
|
|
88
|
+
# Alias: :f
|
|
89
|
+
#
|
|
90
|
+
# @option options [String] :blob (nil) read from the specified blob
|
|
91
|
+
#
|
|
92
|
+
# @option options [Boolean, nil] :includes (nil) respect include directives in config files (`--includes`)
|
|
93
|
+
#
|
|
94
|
+
# @option options [Boolean, nil] :no_includes (nil) do not respect include directives
|
|
95
|
+
# in config files (`--no-includes`)
|
|
96
|
+
#
|
|
97
|
+
# @option options [String] :type (nil) ensure the value conforms to the given type
|
|
98
|
+
#
|
|
99
|
+
# @option options [Boolean, nil] :show_origin (nil) show the origin of the config value
|
|
100
|
+
#
|
|
101
|
+
# @option options [Boolean, nil] :show_scope (nil) show the scope of the config value
|
|
102
|
+
#
|
|
103
|
+
# @option options [Boolean, nil] :null (nil) terminate values with NUL byte instead of newline
|
|
104
|
+
#
|
|
105
|
+
# Alias: :z
|
|
106
|
+
#
|
|
107
|
+
# @option options [String] :default (nil) default value when the key is not found
|
|
108
|
+
#
|
|
109
|
+
# @return [Git::CommandLineResult] the result of calling `git config --get`
|
|
110
|
+
#
|
|
111
|
+
# @raise [ArgumentError] if unsupported options are provided
|
|
112
|
+
#
|
|
113
|
+
# @raise [Git::FailedError] if git exits outside the allowed status range (0..1)
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
end
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'git/commands/base'
|
|
4
|
+
|
|
5
|
+
module Git
|
|
6
|
+
module Commands
|
|
7
|
+
module ConfigOptionSyntax
|
|
8
|
+
# Retrieve all values for a multi-valued config key
|
|
9
|
+
#
|
|
10
|
+
# Wraps `git config --get-all` to return all values matching the given
|
|
11
|
+
# key name, one per line.
|
|
12
|
+
#
|
|
13
|
+
# @example Get all values for a key
|
|
14
|
+
# cmd = Git::Commands::ConfigOptionSyntax::GetAll.new(lib)
|
|
15
|
+
# cmd.call('remote.origin.fetch')
|
|
16
|
+
#
|
|
17
|
+
# @example Get all values with a value pattern
|
|
18
|
+
# cmd = Git::Commands::ConfigOptionSyntax::GetAll.new(lib)
|
|
19
|
+
# cmd.call('remote.origin.fetch', '\\+refs/heads/.*')
|
|
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
|
+
class GetAll < Git::Commands::Base
|
|
29
|
+
arguments do
|
|
30
|
+
literal 'config'
|
|
31
|
+
literal '--get-all'
|
|
32
|
+
|
|
33
|
+
# File-scope options
|
|
34
|
+
flag_option :global
|
|
35
|
+
flag_option :system
|
|
36
|
+
flag_option :local
|
|
37
|
+
flag_option :worktree
|
|
38
|
+
value_option %i[file f]
|
|
39
|
+
value_option :blob
|
|
40
|
+
|
|
41
|
+
# General read options
|
|
42
|
+
flag_option :includes, negatable: true
|
|
43
|
+
|
|
44
|
+
# Type constraint
|
|
45
|
+
value_option :type, inline: true
|
|
46
|
+
flag_option :no_type
|
|
47
|
+
|
|
48
|
+
# Output modifiers
|
|
49
|
+
flag_option :show_origin
|
|
50
|
+
flag_option :show_scope
|
|
51
|
+
flag_option %i[null z]
|
|
52
|
+
|
|
53
|
+
# Operands
|
|
54
|
+
end_of_options
|
|
55
|
+
operand :name, required: true
|
|
56
|
+
operand :value_regex
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# git config --get-all exits 1 when the key is not found (not an error)
|
|
60
|
+
allow_exit_status 0..1
|
|
61
|
+
|
|
62
|
+
# @!method call(*, **)
|
|
63
|
+
#
|
|
64
|
+
# @overload call(name, value_regex = nil, **options)
|
|
65
|
+
#
|
|
66
|
+
# Execute the `git config --get-all` command
|
|
67
|
+
#
|
|
68
|
+
# @param name [String] the config key name to look up
|
|
69
|
+
#
|
|
70
|
+
# @param value_regex [String, nil] (nil) optional regex to filter values
|
|
71
|
+
#
|
|
72
|
+
# @param options [Hash] command options
|
|
73
|
+
#
|
|
74
|
+
# @option options [Boolean, nil] :global (nil) read from global config (`~/.gitconfig`)
|
|
75
|
+
#
|
|
76
|
+
# @option options [Boolean, nil] :system (nil) read from system config
|
|
77
|
+
#
|
|
78
|
+
# @option options [Boolean, nil] :local (nil) read from repository config (`.git/config`)
|
|
79
|
+
#
|
|
80
|
+
# @option options [Boolean, nil] :worktree (nil) read from worktree config
|
|
81
|
+
#
|
|
82
|
+
# @option options [String] :file (nil) read from the specified file
|
|
83
|
+
#
|
|
84
|
+
# Alias: :f
|
|
85
|
+
#
|
|
86
|
+
# @option options [String] :blob (nil) read from the specified blob
|
|
87
|
+
#
|
|
88
|
+
# @option options [Boolean, nil] :includes (nil) follow include directives in config files
|
|
89
|
+
# (`--includes`)
|
|
90
|
+
#
|
|
91
|
+
# @option options [Boolean, nil] :no_includes (nil) suppress include directive processing
|
|
92
|
+
# (`--no-includes`)
|
|
93
|
+
#
|
|
94
|
+
# @option options [String] :type (nil) ensure values conform to the given type
|
|
95
|
+
#
|
|
96
|
+
# @option options [Boolean, nil] :no_type (nil) unset the previously set type specifier;
|
|
97
|
+
# `true` emits `--no-type`
|
|
98
|
+
#
|
|
99
|
+
# @option options [Boolean, nil] :show_origin (nil) show the origin of each config value
|
|
100
|
+
#
|
|
101
|
+
# @option options [Boolean, nil] :show_scope (nil) show the scope of each config value
|
|
102
|
+
#
|
|
103
|
+
# @option options [Boolean, nil] :null (nil) terminate values with NUL byte instead of newline
|
|
104
|
+
#
|
|
105
|
+
# Alias: :z
|
|
106
|
+
#
|
|
107
|
+
# @return [Git::CommandLineResult] the result of calling `git config --get-all`
|
|
108
|
+
#
|
|
109
|
+
# @raise [ArgumentError] if unsupported options are provided
|
|
110
|
+
#
|
|
111
|
+
# @raise [Git::FailedError] if git exits outside the allowed range (exit code > 1)
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
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 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
|
+
# @!method call(*, **)
|
|
52
|
+
#
|
|
53
|
+
# @overload call(name, default = nil, **options)
|
|
54
|
+
#
|
|
55
|
+
# Execute the `git config --get-color` command
|
|
56
|
+
#
|
|
57
|
+
# @param name [String] the color config key name to look up
|
|
58
|
+
#
|
|
59
|
+
# @param default [String, nil] (nil) fallback color when the key is not set
|
|
60
|
+
#
|
|
61
|
+
# @param options [Hash] command options
|
|
62
|
+
#
|
|
63
|
+
# @option options [Boolean, nil] :global (nil) read from global config (`~/.gitconfig`)
|
|
64
|
+
#
|
|
65
|
+
# @option options [Boolean, nil] :system (nil) read from system config
|
|
66
|
+
#
|
|
67
|
+
# @option options [Boolean, nil] :local (nil) read from repository config (`.git/config`)
|
|
68
|
+
#
|
|
69
|
+
# @option options [Boolean, nil] :worktree (nil) read from worktree config
|
|
70
|
+
#
|
|
71
|
+
# @option options [String] :file (nil) read from the specified file
|
|
72
|
+
#
|
|
73
|
+
# Alias: :f
|
|
74
|
+
#
|
|
75
|
+
# @option options [String] :blob (nil) read from the specified blob
|
|
76
|
+
#
|
|
77
|
+
# @option options [Boolean, nil] :includes (nil) respect include directives in config files
|
|
78
|
+
# (`--includes`)
|
|
79
|
+
#
|
|
80
|
+
# @option options [Boolean, nil] :no_includes (nil) suppress include directive processing
|
|
81
|
+
# (`--no-includes`)
|
|
82
|
+
#
|
|
83
|
+
# @return [Git::CommandLineResult] the result of calling `git config --get-color`
|
|
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,93 @@
|
|
|
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
|
+
# @!method call(*, **)
|
|
56
|
+
#
|
|
57
|
+
# @overload call(name, stdout_is_tty = nil, **options)
|
|
58
|
+
#
|
|
59
|
+
# Execute the `git config --get-colorbool` command
|
|
60
|
+
#
|
|
61
|
+
# @param name [String] the color config key name to query
|
|
62
|
+
#
|
|
63
|
+
# @param stdout_is_tty [String, nil] (nil) hint whether stdout is a TTY (`"true"` or `"false"`)
|
|
64
|
+
#
|
|
65
|
+
# @param options [Hash] command options
|
|
66
|
+
#
|
|
67
|
+
# @option options [Boolean, nil] :global (nil) read from global config (`~/.gitconfig`)
|
|
68
|
+
#
|
|
69
|
+
# @option options [Boolean, nil] :system (nil) read from system config
|
|
70
|
+
#
|
|
71
|
+
# @option options [Boolean, nil] :local (nil) read from repository config (`.git/config`)
|
|
72
|
+
#
|
|
73
|
+
# @option options [Boolean, nil] :worktree (nil) read from worktree config
|
|
74
|
+
#
|
|
75
|
+
# @option options [String] :file (nil) read from the specified file
|
|
76
|
+
#
|
|
77
|
+
# Alias: :f
|
|
78
|
+
#
|
|
79
|
+
# @option options [String] :blob (nil) read from the specified blob
|
|
80
|
+
#
|
|
81
|
+
# @option options [Boolean, nil] :includes (nil) respect include directives in config files (`--includes`)
|
|
82
|
+
#
|
|
83
|
+
# @option options [Boolean, nil] :no_includes (nil) disable include directive processing (`--no-includes`)
|
|
84
|
+
#
|
|
85
|
+
# @return [Git::CommandLineResult] the result of calling `git config --get-colorbool`
|
|
86
|
+
#
|
|
87
|
+
# @raise [ArgumentError] if unsupported options are provided
|
|
88
|
+
#
|
|
89
|
+
# @raise [Git::FailedError] if git exits outside the allowed range (exit code > 1)
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
@@ -0,0 +1,115 @@
|
|
|
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
|
+
# @!method call(*, **)
|
|
64
|
+
#
|
|
65
|
+
# @overload call(name_regex, value_regex = nil, **options)
|
|
66
|
+
#
|
|
67
|
+
# Execute the `git config --get-regexp` command
|
|
68
|
+
#
|
|
69
|
+
# @param name_regex [String] regex pattern to match config key names
|
|
70
|
+
#
|
|
71
|
+
# @param value_regex [String, nil] optional regex to filter values
|
|
72
|
+
#
|
|
73
|
+
# @param options [Hash] command options
|
|
74
|
+
#
|
|
75
|
+
# @option options [Boolean, nil] :global (nil) read from global config (`~/.gitconfig`)
|
|
76
|
+
#
|
|
77
|
+
# @option options [Boolean, nil] :system (nil) read from system config
|
|
78
|
+
#
|
|
79
|
+
# @option options [Boolean, nil] :local (nil) read from repository config (`.git/config`)
|
|
80
|
+
#
|
|
81
|
+
# @option options [Boolean, nil] :worktree (nil) read from worktree config
|
|
82
|
+
#
|
|
83
|
+
# @option options [String] :file (nil) read from the specified file
|
|
84
|
+
#
|
|
85
|
+
# Alias: :f
|
|
86
|
+
#
|
|
87
|
+
# @option options [String] :blob (nil) read from the specified blob
|
|
88
|
+
#
|
|
89
|
+
# @option options [Boolean, nil] :includes (nil) respect include directives in
|
|
90
|
+
# config files (`--includes`)
|
|
91
|
+
#
|
|
92
|
+
# @option options [Boolean, nil] :no_includes (nil) ignore include directives in
|
|
93
|
+
# config files (`--no-includes`)
|
|
94
|
+
#
|
|
95
|
+
# @option options [String] :type (nil) ensure values conform to the given type
|
|
96
|
+
#
|
|
97
|
+
# @option options [Boolean, nil] :show_origin (nil) show the origin of each config entry
|
|
98
|
+
#
|
|
99
|
+
# @option options [Boolean, nil] :show_scope (nil) show the scope of each config entry
|
|
100
|
+
#
|
|
101
|
+
# @option options [Boolean, nil] :null (nil) terminate values with NUL byte instead of newline
|
|
102
|
+
#
|
|
103
|
+
# Alias: :z
|
|
104
|
+
#
|
|
105
|
+
# @option options [Boolean, nil] :name_only (nil) output only the names of config keys
|
|
106
|
+
#
|
|
107
|
+
# @return [Git::CommandLineResult] the result of calling `git config --get-regexp`
|
|
108
|
+
#
|
|
109
|
+
# @raise [ArgumentError] if unsupported options are provided
|
|
110
|
+
#
|
|
111
|
+
# @raise [Git::FailedError] if git exits outside the allowed range (exit code > 1)
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
end
|
|
@@ -0,0 +1,102 @@
|
|
|
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
|
+
# Operands
|
|
49
|
+
end_of_options
|
|
50
|
+
operand :name, required: true
|
|
51
|
+
operand :url, required: true
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# git config --get-urlmatch exits 1 when no match is found (not an error)
|
|
55
|
+
allow_exit_status 0..1
|
|
56
|
+
|
|
57
|
+
# @!method call(*, **)
|
|
58
|
+
#
|
|
59
|
+
# @overload call(name, url, **options)
|
|
60
|
+
#
|
|
61
|
+
# Execute the `git config --get-urlmatch` command
|
|
62
|
+
#
|
|
63
|
+
# @param name [String] the config key name (or section prefix) to look up
|
|
64
|
+
#
|
|
65
|
+
# @param url [String] the URL to match against
|
|
66
|
+
#
|
|
67
|
+
# @param options [Hash] command options
|
|
68
|
+
#
|
|
69
|
+
# @option options [Boolean, nil] :global (nil) read from global config (`~/.gitconfig`)
|
|
70
|
+
#
|
|
71
|
+
# @option options [Boolean, nil] :system (nil) read from system config
|
|
72
|
+
#
|
|
73
|
+
# @option options [Boolean, nil] :local (nil) read from repository config (`.git/config`)
|
|
74
|
+
#
|
|
75
|
+
# @option options [Boolean, nil] :worktree (nil) read from worktree config
|
|
76
|
+
#
|
|
77
|
+
# @option options [String] :file (nil) read from the specified file
|
|
78
|
+
#
|
|
79
|
+
# Alias: :f
|
|
80
|
+
#
|
|
81
|
+
# @option options [String] :blob (nil) read from the specified blob
|
|
82
|
+
#
|
|
83
|
+
# @option options [String] :type (nil) ensure values conform to the given type
|
|
84
|
+
#
|
|
85
|
+
# @option options [Boolean, nil] :null (nil) terminate values with NUL byte instead of newline
|
|
86
|
+
#
|
|
87
|
+
# Alias: :z
|
|
88
|
+
#
|
|
89
|
+
# @option options [Boolean, nil] :includes (nil) respect include directives in config files (`--includes`)
|
|
90
|
+
#
|
|
91
|
+
# @option options [Boolean, nil] :no_includes (nil) disable include directives
|
|
92
|
+
# in config files (`--no-includes`)
|
|
93
|
+
#
|
|
94
|
+
# @return [Git::CommandLineResult] the result of calling `git config --get-urlmatch`
|
|
95
|
+
#
|
|
96
|
+
# @raise [ArgumentError] if unsupported options are provided
|
|
97
|
+
#
|
|
98
|
+
# @raise [Git::FailedError] if git exits outside the allowed range (exit code > 1)
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
end
|