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,107 @@
|
|
|
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
|
+
# @!method call(*, **)
|
|
60
|
+
#
|
|
61
|
+
# @overload call(**options)
|
|
62
|
+
#
|
|
63
|
+
# Execute the `git config --list` command
|
|
64
|
+
#
|
|
65
|
+
# @param options [Hash] command options
|
|
66
|
+
#
|
|
67
|
+
# @option options [Boolean, nil] :global (nil) list only global config entries
|
|
68
|
+
#
|
|
69
|
+
# @option options [Boolean, nil] :system (nil) list only system config entries
|
|
70
|
+
#
|
|
71
|
+
# @option options [Boolean, nil] :local (nil) list only repository config entries
|
|
72
|
+
#
|
|
73
|
+
# @option options [Boolean, nil] :worktree (nil) list only worktree config entries
|
|
74
|
+
#
|
|
75
|
+
# @option options [String] :file (nil) list entries from the specified file
|
|
76
|
+
#
|
|
77
|
+
# Alias: :f
|
|
78
|
+
#
|
|
79
|
+
# @option options [String] :blob (nil) list entries from the specified blob
|
|
80
|
+
#
|
|
81
|
+
# @option options [Boolean, nil] :includes (nil) respect include directives in config files
|
|
82
|
+
# (`--includes`)
|
|
83
|
+
#
|
|
84
|
+
# @option options [Boolean, nil] :no_includes (nil) suppress include directive processing
|
|
85
|
+
# (`--no-includes`)
|
|
86
|
+
#
|
|
87
|
+
# @option options [Boolean, nil] :show_origin (nil) show the origin of each config entry
|
|
88
|
+
#
|
|
89
|
+
# @option options [Boolean, nil] :show_scope (nil) show the scope of each config entry
|
|
90
|
+
#
|
|
91
|
+
# @option options [Boolean, nil] :null (nil) terminate values with NUL byte instead of newline
|
|
92
|
+
#
|
|
93
|
+
# Alias: :z
|
|
94
|
+
#
|
|
95
|
+
# @option options [Boolean, nil] :name_only (nil) output only the names of config keys
|
|
96
|
+
#
|
|
97
|
+
# @option options [String] :type (nil) ensure values conform to the given type
|
|
98
|
+
#
|
|
99
|
+
# @return [Git::CommandLineResult] the result of calling `git config --list`
|
|
100
|
+
#
|
|
101
|
+
# @raise [ArgumentError] if unsupported options are provided
|
|
102
|
+
#
|
|
103
|
+
# @raise [Git::FailedError] if git exits with a non-zero exit status
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
end
|
|
@@ -0,0 +1,74 @@
|
|
|
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(*, **)
|
|
43
|
+
#
|
|
44
|
+
# @overload call(name, **options)
|
|
45
|
+
#
|
|
46
|
+
# Execute the `git config --remove-section` command
|
|
47
|
+
#
|
|
48
|
+
# @param name [String] the section name to remove
|
|
49
|
+
#
|
|
50
|
+
# @param options [Hash] command options
|
|
51
|
+
#
|
|
52
|
+
# @option options [Boolean, nil] :global (nil) remove from global config (`~/.gitconfig`)
|
|
53
|
+
#
|
|
54
|
+
# @option options [Boolean, nil] :system (nil) remove from system config
|
|
55
|
+
#
|
|
56
|
+
# @option options [Boolean, nil] :local (nil) remove from repository config (`.git/config`)
|
|
57
|
+
#
|
|
58
|
+
# @option options [Boolean, nil] :worktree (nil) remove from worktree config
|
|
59
|
+
#
|
|
60
|
+
# @option options [String] :file (nil) remove from the specified file
|
|
61
|
+
#
|
|
62
|
+
# Alias: :f
|
|
63
|
+
#
|
|
64
|
+
# @option options [String] :blob (nil) read from the specified blob
|
|
65
|
+
#
|
|
66
|
+
# @return [Git::CommandLineResult] the result of calling `git config --remove-section`
|
|
67
|
+
#
|
|
68
|
+
# @raise [ArgumentError] if unsupported options are provided
|
|
69
|
+
#
|
|
70
|
+
# @raise [Git::FailedError] if git exits with a non-zero exit status
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'git/commands/base'
|
|
4
|
+
|
|
5
|
+
module Git
|
|
6
|
+
module Commands
|
|
7
|
+
module 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(*, **)
|
|
45
|
+
#
|
|
46
|
+
# @overload call(old_name, new_name, **options)
|
|
47
|
+
#
|
|
48
|
+
# Execute the `git config --rename-section` command
|
|
49
|
+
#
|
|
50
|
+
# @param old_name [String] the current section name
|
|
51
|
+
#
|
|
52
|
+
# @param new_name [String] the new section name
|
|
53
|
+
#
|
|
54
|
+
# @param options [Hash] command options
|
|
55
|
+
#
|
|
56
|
+
# @option options [Boolean, nil] :global (nil) operate on global config (`~/.gitconfig`)
|
|
57
|
+
#
|
|
58
|
+
# @option options [Boolean, nil] :system (nil) operate on system config
|
|
59
|
+
#
|
|
60
|
+
# @option options [Boolean, nil] :local (nil) operate on repository config (`.git/config`)
|
|
61
|
+
#
|
|
62
|
+
# @option options [Boolean, nil] :worktree (nil) operate on worktree config
|
|
63
|
+
#
|
|
64
|
+
# @option options [String] :file (nil) operate on the specified file
|
|
65
|
+
#
|
|
66
|
+
# Alias: :f
|
|
67
|
+
#
|
|
68
|
+
# @option options [String] :blob (nil) read from the specified blob
|
|
69
|
+
#
|
|
70
|
+
# @return [Git::CommandLineResult] the result of calling `git config --rename-section`
|
|
71
|
+
#
|
|
72
|
+
# @raise [ArgumentError] if unsupported options are provided
|
|
73
|
+
#
|
|
74
|
+
# @raise [Git::FailedError] if git exits with a non-zero exit status
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'git/commands/base'
|
|
4
|
+
|
|
5
|
+
module Git
|
|
6
|
+
module Commands
|
|
7
|
+
module ConfigOptionSyntax
|
|
8
|
+
# Replace all matching values for a config key
|
|
9
|
+
#
|
|
10
|
+
# Wraps `git config --replace-all` to replace all entries matching the
|
|
11
|
+
# given key and optional value regex with a new value.
|
|
12
|
+
#
|
|
13
|
+
# @example Replace all values for a key
|
|
14
|
+
# cmd = Git::Commands::ConfigOptionSyntax::ReplaceAll.new(lib)
|
|
15
|
+
# cmd.call('core.autocrlf', 'true')
|
|
16
|
+
#
|
|
17
|
+
# @example Replace values matching a pattern
|
|
18
|
+
# cmd = Git::Commands::ConfigOptionSyntax::ReplaceAll.new(lib)
|
|
19
|
+
# cmd.call('core.autocrlf', 'true', 'false')
|
|
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 ReplaceAll < Git::Commands::Base
|
|
30
|
+
arguments do
|
|
31
|
+
literal 'config'
|
|
32
|
+
literal '--replace-all'
|
|
33
|
+
|
|
34
|
+
# Write modifiers
|
|
35
|
+
value_option :comment
|
|
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
|
+
# Value matching
|
|
46
|
+
flag_option :fixed_value
|
|
47
|
+
|
|
48
|
+
# Type constraint
|
|
49
|
+
value_option :type, inline: true
|
|
50
|
+
flag_option :no_type
|
|
51
|
+
|
|
52
|
+
# Operands
|
|
53
|
+
end_of_options
|
|
54
|
+
operand :name, required: true
|
|
55
|
+
operand :value, required: true
|
|
56
|
+
operand :value_regex
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# @!method call(*, **)
|
|
60
|
+
#
|
|
61
|
+
# @overload call(name, value, value_regex = nil, **options)
|
|
62
|
+
#
|
|
63
|
+
# Execute the `git config --replace-all` command
|
|
64
|
+
#
|
|
65
|
+
# @param name [String] the config key name
|
|
66
|
+
#
|
|
67
|
+
# @param value [String] the new value to set
|
|
68
|
+
#
|
|
69
|
+
# @param value_regex [String, nil] (nil) optional regex to match existing values to replace
|
|
70
|
+
#
|
|
71
|
+
# @param options [Hash] command options
|
|
72
|
+
#
|
|
73
|
+
# @option options [Boolean, nil] :global (nil) write to global config (`~/.gitconfig`)
|
|
74
|
+
#
|
|
75
|
+
# @option options [Boolean, nil] :system (nil) write to system config
|
|
76
|
+
#
|
|
77
|
+
# @option options [Boolean, nil] :local (nil) write to repository config (`.git/config`)
|
|
78
|
+
#
|
|
79
|
+
# @option options [Boolean, nil] :worktree (nil) write to worktree config
|
|
80
|
+
#
|
|
81
|
+
# @option options [String] :file (nil) write to the specified file
|
|
82
|
+
#
|
|
83
|
+
# Alias: :f
|
|
84
|
+
#
|
|
85
|
+
# @option options [String] :blob (nil) read from the specified blob
|
|
86
|
+
#
|
|
87
|
+
# @option options [String] :comment (nil) append a comment at the end of new or modified lines
|
|
88
|
+
#
|
|
89
|
+
# @option options [Boolean, nil] :fixed_value (nil) treat the value regex as an exact string
|
|
90
|
+
#
|
|
91
|
+
# @option options [String] :type (nil) ensure the value conforms to the given type
|
|
92
|
+
#
|
|
93
|
+
# @option options [Boolean, nil] :no_type (nil) unset the previously set type specifier;
|
|
94
|
+
# `true` emits `--no-type`
|
|
95
|
+
#
|
|
96
|
+
# @return [Git::CommandLineResult] the result of calling `git config --replace-all`
|
|
97
|
+
#
|
|
98
|
+
# @raise [ArgumentError] if unsupported options are provided
|
|
99
|
+
#
|
|
100
|
+
# @raise [Git::FailedError] if git exits with a non-zero exit status
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
end
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'git/commands/base'
|
|
4
|
+
|
|
5
|
+
module Git
|
|
6
|
+
module Commands
|
|
7
|
+
module ConfigOptionSyntax
|
|
8
|
+
# Set a config value
|
|
9
|
+
#
|
|
10
|
+
# Wraps the implicit `git config <name> <value>` set mode to assign
|
|
11
|
+
# a value to a config key, optionally replacing only the entry
|
|
12
|
+
# matching a value regex.
|
|
13
|
+
#
|
|
14
|
+
# @example Set a local config value
|
|
15
|
+
# cmd = Git::Commands::ConfigOptionSyntax::Set.new(lib)
|
|
16
|
+
# cmd.call('user.name', 'Alice')
|
|
17
|
+
#
|
|
18
|
+
# @example Set a global config value
|
|
19
|
+
# cmd = Git::Commands::ConfigOptionSyntax::Set.new(lib)
|
|
20
|
+
# cmd.call('user.name', 'Alice', global: true)
|
|
21
|
+
#
|
|
22
|
+
# @example Set a value with a type constraint
|
|
23
|
+
# cmd = Git::Commands::ConfigOptionSyntax::Set.new(lib)
|
|
24
|
+
# cmd.call('core.bare', 'true', type: 'bool')
|
|
25
|
+
#
|
|
26
|
+
# @note `arguments` block audited against https://git-scm.com/docs/git-config/2.53.0
|
|
27
|
+
#
|
|
28
|
+
# @see Git::Commands::ConfigOptionSyntax
|
|
29
|
+
#
|
|
30
|
+
# @see https://git-scm.com/docs/git-config git-config documentation
|
|
31
|
+
#
|
|
32
|
+
# @api private
|
|
33
|
+
#
|
|
34
|
+
class Set < Git::Commands::Base
|
|
35
|
+
arguments do
|
|
36
|
+
literal 'config'
|
|
37
|
+
|
|
38
|
+
# Write modifiers
|
|
39
|
+
flag_option :replace_all
|
|
40
|
+
flag_option :append
|
|
41
|
+
value_option :comment
|
|
42
|
+
|
|
43
|
+
# File-scope options
|
|
44
|
+
flag_option :global
|
|
45
|
+
flag_option :system
|
|
46
|
+
flag_option :local
|
|
47
|
+
flag_option :worktree
|
|
48
|
+
value_option %i[file f]
|
|
49
|
+
value_option :blob
|
|
50
|
+
|
|
51
|
+
# Value matching
|
|
52
|
+
flag_option :fixed_value
|
|
53
|
+
|
|
54
|
+
# Type constraint
|
|
55
|
+
value_option :type, inline: true
|
|
56
|
+
flag_option :no_type
|
|
57
|
+
|
|
58
|
+
# Operands
|
|
59
|
+
end_of_options
|
|
60
|
+
operand :name, required: true
|
|
61
|
+
operand :value, required: true
|
|
62
|
+
operand :value_regex
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
# @!method call(*, **)
|
|
66
|
+
#
|
|
67
|
+
# @overload call(name, value, value_regex = nil, **options)
|
|
68
|
+
#
|
|
69
|
+
# Execute the `git config <name> <value>` command
|
|
70
|
+
#
|
|
71
|
+
# @param name [String] the config key name to set
|
|
72
|
+
#
|
|
73
|
+
# @param value [String] the value to assign
|
|
74
|
+
#
|
|
75
|
+
# @param value_regex [String, nil] (nil) optional regex to match the existing value to replace
|
|
76
|
+
#
|
|
77
|
+
# @param options [Hash] command options
|
|
78
|
+
#
|
|
79
|
+
# @option options [Boolean, nil] :replace_all (nil) replace all lines matching the key
|
|
80
|
+
#
|
|
81
|
+
# @option options [Boolean, nil] :append (nil) add a new line without altering existing values
|
|
82
|
+
#
|
|
83
|
+
# @option options [String] :comment (nil) append a comment at the end of new or modified lines
|
|
84
|
+
#
|
|
85
|
+
# @option options [Boolean, nil] :global (nil) write to global config (`~/.gitconfig`)
|
|
86
|
+
#
|
|
87
|
+
# @option options [Boolean, nil] :system (nil) write to system config
|
|
88
|
+
#
|
|
89
|
+
# @option options [Boolean, nil] :local (nil) write to repository config (`.git/config`)
|
|
90
|
+
#
|
|
91
|
+
# @option options [Boolean, nil] :worktree (nil) write to worktree config
|
|
92
|
+
#
|
|
93
|
+
# @option options [String] :file (nil) write to the specified file
|
|
94
|
+
#
|
|
95
|
+
# Alias: :f
|
|
96
|
+
#
|
|
97
|
+
# @option options [String] :blob (nil) read from the specified blob
|
|
98
|
+
#
|
|
99
|
+
# @option options [Boolean, nil] :fixed_value (nil) treat the value regex as an exact string
|
|
100
|
+
#
|
|
101
|
+
# @option options [String] :type (nil) ensure the value conforms to the given type
|
|
102
|
+
#
|
|
103
|
+
# @option options [Boolean, nil] :no_type (nil) unset the previously set type specifier;
|
|
104
|
+
# `true` emits `--no-type`
|
|
105
|
+
#
|
|
106
|
+
# @return [Git::CommandLineResult] the result of calling `git config`
|
|
107
|
+
#
|
|
108
|
+
# @raise [ArgumentError] if unsupported options are provided
|
|
109
|
+
#
|
|
110
|
+
# @raise [Git::FailedError] if git exits with a non-zero exit status
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
end
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'git/commands/base'
|
|
4
|
+
|
|
5
|
+
module Git
|
|
6
|
+
module Commands
|
|
7
|
+
module ConfigOptionSyntax
|
|
8
|
+
# Remove a single config entry
|
|
9
|
+
#
|
|
10
|
+
# Wraps `git config --unset` to remove the entry matching the given
|
|
11
|
+
# key name and optional value regex.
|
|
12
|
+
#
|
|
13
|
+
# @example Unset a config key
|
|
14
|
+
# cmd = Git::Commands::ConfigOptionSyntax::Unset.new(lib)
|
|
15
|
+
# cmd.call('user.name')
|
|
16
|
+
#
|
|
17
|
+
# @example Unset a global config key
|
|
18
|
+
# cmd = Git::Commands::ConfigOptionSyntax::Unset.new(lib)
|
|
19
|
+
# cmd.call('user.name', global: true)
|
|
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 Unset < Git::Commands::Base
|
|
29
|
+
arguments do
|
|
30
|
+
literal 'config'
|
|
31
|
+
literal '--unset'
|
|
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
|
+
# Value matching
|
|
42
|
+
flag_option :fixed_value
|
|
43
|
+
|
|
44
|
+
# Operands
|
|
45
|
+
end_of_options
|
|
46
|
+
operand :name, required: true
|
|
47
|
+
operand :value_regex
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# git config --unset exits 5 when trying to unset a non-existent or multi-valued key
|
|
51
|
+
allow_exit_status 0..5
|
|
52
|
+
|
|
53
|
+
# @!method call(*, **)
|
|
54
|
+
#
|
|
55
|
+
# @overload call(name, value_regex = nil, **options)
|
|
56
|
+
#
|
|
57
|
+
# Execute the `git config --unset` command
|
|
58
|
+
#
|
|
59
|
+
# @param name [String] the config key name to unset
|
|
60
|
+
#
|
|
61
|
+
# @param value_regex [String, nil] (nil) optional regex to match the value to remove
|
|
62
|
+
#
|
|
63
|
+
# @param options [Hash] command options
|
|
64
|
+
#
|
|
65
|
+
# @option options [Boolean, nil] :global (nil) remove from global config (`~/.gitconfig`)
|
|
66
|
+
#
|
|
67
|
+
# @option options [Boolean, nil] :system (nil) remove from system config
|
|
68
|
+
#
|
|
69
|
+
# @option options [Boolean, nil] :local (nil) remove from repository config (`.git/config`)
|
|
70
|
+
#
|
|
71
|
+
# @option options [Boolean, nil] :worktree (nil) remove from worktree config
|
|
72
|
+
#
|
|
73
|
+
# @option options [String] :file (nil) remove 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] :fixed_value (nil) treat the value regex as an exact string
|
|
80
|
+
#
|
|
81
|
+
# @return [Git::CommandLineResult] the result of calling `git config --unset`
|
|
82
|
+
#
|
|
83
|
+
# @raise [ArgumentError] if unsupported options are provided
|
|
84
|
+
#
|
|
85
|
+
# @raise [Git::FailedError] if git exits outside the allowed range (exit code > 5)
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'git/commands/base'
|
|
4
|
+
|
|
5
|
+
module Git
|
|
6
|
+
module Commands
|
|
7
|
+
module ConfigOptionSyntax
|
|
8
|
+
# Remove all matching config entries
|
|
9
|
+
#
|
|
10
|
+
# Wraps `git config --unset-all` to remove all entries matching the
|
|
11
|
+
# given key name and optional value regex.
|
|
12
|
+
#
|
|
13
|
+
# @example Unset all values for a key
|
|
14
|
+
# cmd = Git::Commands::ConfigOptionSyntax::UnsetAll.new(lib)
|
|
15
|
+
# cmd.call('remote.origin.fetch')
|
|
16
|
+
#
|
|
17
|
+
# @example Unset all values matching a pattern
|
|
18
|
+
# cmd = Git::Commands::ConfigOptionSyntax::UnsetAll.new(lib)
|
|
19
|
+
# cmd.call('core.gitproxy', 'for kernel.org$')
|
|
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 UnsetAll < Git::Commands::Base
|
|
29
|
+
arguments do
|
|
30
|
+
literal 'config'
|
|
31
|
+
literal '--unset-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
|
+
# Value matching
|
|
42
|
+
flag_option :fixed_value
|
|
43
|
+
|
|
44
|
+
# Operands
|
|
45
|
+
end_of_options
|
|
46
|
+
operand :name, required: true
|
|
47
|
+
operand :value_regex
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# git config --unset-all exits 5 when trying to unset a non-existent key
|
|
51
|
+
allow_exit_status 0..5
|
|
52
|
+
|
|
53
|
+
# @!method call(*, **)
|
|
54
|
+
#
|
|
55
|
+
# @overload call(name, value_regex = nil, **options)
|
|
56
|
+
#
|
|
57
|
+
# Execute the `git config --unset-all` command
|
|
58
|
+
#
|
|
59
|
+
# @param name [String] the config key name to unset
|
|
60
|
+
#
|
|
61
|
+
# @param value_regex [String, nil] (nil) optional regex to match values to remove
|
|
62
|
+
#
|
|
63
|
+
# @param options [Hash] command options
|
|
64
|
+
#
|
|
65
|
+
# @option options [Boolean, nil] :global (nil) remove from global config (`~/.gitconfig`)
|
|
66
|
+
#
|
|
67
|
+
# @option options [Boolean, nil] :system (nil) remove from system config
|
|
68
|
+
#
|
|
69
|
+
# @option options [Boolean, nil] :local (nil) remove from repository config (`.git/config`)
|
|
70
|
+
#
|
|
71
|
+
# @option options [Boolean, nil] :worktree (nil) remove from worktree config
|
|
72
|
+
#
|
|
73
|
+
# @option options [String] :file (nil) remove 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] :fixed_value (nil) treat the value regex as an exact string
|
|
80
|
+
#
|
|
81
|
+
# @return [Git::CommandLineResult] the result of calling `git config --unset-all`
|
|
82
|
+
#
|
|
83
|
+
# @raise [ArgumentError] if unsupported options are provided
|
|
84
|
+
#
|
|
85
|
+
# @raise [Git::FailedError] if git exits outside the allowed range (exit code > 5)
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|