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,191 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'git/commands/base'
|
|
4
|
+
|
|
5
|
+
module Git
|
|
6
|
+
module Commands
|
|
7
|
+
# Implements the `git ls-files` command.
|
|
8
|
+
#
|
|
9
|
+
# This command shows information about files in the index and the working tree.
|
|
10
|
+
# It is used to list tracked, untracked, ignored, and staged files.
|
|
11
|
+
#
|
|
12
|
+
# @example List staged files with stage info
|
|
13
|
+
# ls_files = Git::Commands::LsFiles.new(execution_context)
|
|
14
|
+
# ls_files.call('.', stage: true)
|
|
15
|
+
#
|
|
16
|
+
# @example List untracked files not ignored
|
|
17
|
+
# ls_files = Git::Commands::LsFiles.new(execution_context)
|
|
18
|
+
# ls_files.call(others: true, exclude_standard: true)
|
|
19
|
+
#
|
|
20
|
+
# @example List ignored files
|
|
21
|
+
# ls_files = Git::Commands::LsFiles.new(execution_context)
|
|
22
|
+
# ls_files.call(others: true, ignored: true, exclude_standard: true)
|
|
23
|
+
#
|
|
24
|
+
# @example List untracked files in a specific directory
|
|
25
|
+
# ls_files = Git::Commands::LsFiles.new(execution_context)
|
|
26
|
+
# ls_files.call(others: true, exclude_standard: true, chdir: '/path/to/workdir')
|
|
27
|
+
#
|
|
28
|
+
# @note `arguments` block audited against https://git-scm.com/docs/git-ls-files/2.53.0
|
|
29
|
+
#
|
|
30
|
+
# @see https://git-scm.com/docs/git-ls-files git-ls-files documentation
|
|
31
|
+
#
|
|
32
|
+
# @see Git::Commands
|
|
33
|
+
#
|
|
34
|
+
# @api private
|
|
35
|
+
#
|
|
36
|
+
class LsFiles < Git::Commands::Base
|
|
37
|
+
arguments do
|
|
38
|
+
literal 'ls-files'
|
|
39
|
+
flag_option :z
|
|
40
|
+
flag_option :t
|
|
41
|
+
flag_option :v
|
|
42
|
+
flag_option :f
|
|
43
|
+
flag_option %i[cached c]
|
|
44
|
+
flag_option %i[deleted d]
|
|
45
|
+
flag_option %i[others o]
|
|
46
|
+
flag_option %i[ignored i]
|
|
47
|
+
flag_option %i[stage s]
|
|
48
|
+
flag_option %i[unmerged u]
|
|
49
|
+
flag_option %i[killed k]
|
|
50
|
+
flag_option %i[modified m]
|
|
51
|
+
flag_option :resolve_undo
|
|
52
|
+
flag_option :directory
|
|
53
|
+
flag_option :no_empty_directory
|
|
54
|
+
flag_option :eol
|
|
55
|
+
flag_option :deduplicate
|
|
56
|
+
value_option %i[exclude x], inline: true
|
|
57
|
+
value_option %i[exclude_from X], inline: true
|
|
58
|
+
value_option :exclude_per_directory, inline: true
|
|
59
|
+
flag_option :exclude_standard
|
|
60
|
+
flag_option :error_unmatch
|
|
61
|
+
value_option :with_tree, inline: true
|
|
62
|
+
flag_option :full_name
|
|
63
|
+
flag_option :recurse_submodules
|
|
64
|
+
flag_or_value_option :abbrev, inline: true
|
|
65
|
+
flag_option :debug
|
|
66
|
+
flag_option :sparse
|
|
67
|
+
value_option :format, inline: true
|
|
68
|
+
|
|
69
|
+
end_of_options
|
|
70
|
+
|
|
71
|
+
operand :file, repeatable: true
|
|
72
|
+
|
|
73
|
+
execution_option :chdir
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
# @!method call(*, **)
|
|
77
|
+
#
|
|
78
|
+
# @overload call(*file, **options)
|
|
79
|
+
#
|
|
80
|
+
# Execute the `git ls-files` command.
|
|
81
|
+
#
|
|
82
|
+
# @param file [Array<String>] paths to limit file listing
|
|
83
|
+
#
|
|
84
|
+
# @param options [Hash] command options
|
|
85
|
+
#
|
|
86
|
+
# @option options [Boolean, nil] :z (nil) use NUL line termination and do not quote filenames
|
|
87
|
+
#
|
|
88
|
+
# @option options [Boolean, nil] :t (nil) show status tags together with filenames
|
|
89
|
+
#
|
|
90
|
+
# @option options [Boolean, nil] :v (nil) similar to `-t` but use lowercase letters for files
|
|
91
|
+
# that are marked as assume unchanged
|
|
92
|
+
#
|
|
93
|
+
# @option options [Boolean, nil] :f (nil) similar to `-t` but use lowercase letters for files
|
|
94
|
+
# that are marked as fsmonitor valid
|
|
95
|
+
#
|
|
96
|
+
# @option options [Boolean, nil] :cached (nil) show all files cached in the index
|
|
97
|
+
#
|
|
98
|
+
# Alias: :c
|
|
99
|
+
#
|
|
100
|
+
# @option options [Boolean, nil] :deleted (nil) show files with an unstaged deletion
|
|
101
|
+
#
|
|
102
|
+
# Alias: :d
|
|
103
|
+
#
|
|
104
|
+
# @option options [Boolean, nil] :others (nil) show other (i.e. untracked) files in the output
|
|
105
|
+
#
|
|
106
|
+
# Alias: :o
|
|
107
|
+
#
|
|
108
|
+
# @option options [Boolean, nil] :ignored (nil) show only ignored files in the output
|
|
109
|
+
#
|
|
110
|
+
# Must be used with either `:cached` or `:others`. When used with `:cached`, shows only
|
|
111
|
+
# cached files matching an exclude pattern. When used with `:others`, shows only
|
|
112
|
+
# untracked files matched by an exclude pattern.
|
|
113
|
+
#
|
|
114
|
+
# Alias: :i
|
|
115
|
+
#
|
|
116
|
+
# @option options [Boolean, nil] :stage (nil) show object name, mode bits, and stage number
|
|
117
|
+
#
|
|
118
|
+
# Alias: :s
|
|
119
|
+
#
|
|
120
|
+
# @option options [Boolean, nil] :unmerged (nil) show information about unmerged files
|
|
121
|
+
#
|
|
122
|
+
# Alias: :u
|
|
123
|
+
#
|
|
124
|
+
# @option options [Boolean, nil] :killed (nil) show untracked files that need to be removed
|
|
125
|
+
# due to file/directory conflicts for tracked files
|
|
126
|
+
#
|
|
127
|
+
# Alias: :k
|
|
128
|
+
#
|
|
129
|
+
# @option options [Boolean, nil] :modified (nil) show files with an unstaged modification
|
|
130
|
+
#
|
|
131
|
+
# Alias: :m
|
|
132
|
+
#
|
|
133
|
+
# @option options [Boolean, nil] :resolve_undo (nil) show files having resolve-undo information
|
|
134
|
+
#
|
|
135
|
+
# @option options [Boolean, nil] :directory (nil) show just the directory name (with trailing
|
|
136
|
+
# slash) when a whole directory is classified as "other"
|
|
137
|
+
#
|
|
138
|
+
# @option options [Boolean, nil] :no_empty_directory (nil) do not list empty directories
|
|
139
|
+
#
|
|
140
|
+
# @option options [Boolean, nil] :eol (nil) show EOL and encoding attributes of files
|
|
141
|
+
#
|
|
142
|
+
# @option options [Boolean, nil] :deduplicate (nil) suppress duplicate filenames when showing
|
|
143
|
+
# only filenames
|
|
144
|
+
#
|
|
145
|
+
# @option options [String] :exclude (nil) skip untracked files matching the given pattern
|
|
146
|
+
#
|
|
147
|
+
# Alias: :x
|
|
148
|
+
#
|
|
149
|
+
# @option options [String] :exclude_from (nil) read exclude patterns from the given file
|
|
150
|
+
#
|
|
151
|
+
# Alias: :X
|
|
152
|
+
#
|
|
153
|
+
# @option options [String] :exclude_per_directory (nil) read additional exclude patterns
|
|
154
|
+
# from the named file in each directory
|
|
155
|
+
#
|
|
156
|
+
# @option options [Boolean, nil] :exclude_standard (nil) add the standard git exclusions
|
|
157
|
+
#
|
|
158
|
+
# @option options [Boolean, nil] :error_unmatch (nil) treat unmatched files as an error
|
|
159
|
+
#
|
|
160
|
+
# @option options [String] :with_tree (nil) pretend paths removed since the named
|
|
161
|
+
# tree-ish are still present when using `--error-unmatch`
|
|
162
|
+
#
|
|
163
|
+
# @option options [Boolean, nil] :full_name (nil) force paths to be output relative to the
|
|
164
|
+
# project top-level directory
|
|
165
|
+
#
|
|
166
|
+
# @option options [Boolean, nil] :recurse_submodules (nil) recursively calls ls-files on each
|
|
167
|
+
# active submodule in the repository
|
|
168
|
+
#
|
|
169
|
+
# @option options [Boolean, Integer, String, nil] :abbrev (nil) show only a partial prefix of the
|
|
170
|
+
# object name; pass `true` for the default number of hex digits, or an Integer or String
|
|
171
|
+
# for a specific prefix length (e.g., `abbrev: 10` or `abbrev: "10"`)
|
|
172
|
+
#
|
|
173
|
+
# @option options [Boolean, nil] :debug (nil) after each filename, output raw index information
|
|
174
|
+
# (ctime data, mtime data, dev, ino, uid, gid, size, flags, flagsx)
|
|
175
|
+
#
|
|
176
|
+
# @option options [Boolean, nil] :sparse (nil) if the index is sparse, show the sparse directory
|
|
177
|
+
# entries rather than expanding to the contained files
|
|
178
|
+
#
|
|
179
|
+
# @option options [String] :format (nil) a string that interpolates %(fieldname) from
|
|
180
|
+
# the index entry for each file
|
|
181
|
+
#
|
|
182
|
+
# @option options [String] :chdir (nil) run the command from the specified directory
|
|
183
|
+
#
|
|
184
|
+
# @return [Git::CommandLineResult] the result of calling `git ls-files`
|
|
185
|
+
#
|
|
186
|
+
# @raise [ArgumentError] if unsupported options are provided
|
|
187
|
+
#
|
|
188
|
+
# @raise [Git::FailedError] if git exits with a non-zero exit status
|
|
189
|
+
end
|
|
190
|
+
end
|
|
191
|
+
end
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'git/commands/base'
|
|
4
|
+
|
|
5
|
+
module Git
|
|
6
|
+
module Commands
|
|
7
|
+
# Implements the `git ls-remote` command
|
|
8
|
+
#
|
|
9
|
+
# Lists references available in a remote repository along with the
|
|
10
|
+
# associated commit IDs. Can be used to detect changes in a remote
|
|
11
|
+
# repository without cloning or fetching.
|
|
12
|
+
#
|
|
13
|
+
# @note `arguments` block audited against https://git-scm.com/docs/git-ls-remote/2.53.0
|
|
14
|
+
#
|
|
15
|
+
# @see https://git-scm.com/docs/git-ls-remote git-ls-remote documentation
|
|
16
|
+
#
|
|
17
|
+
# @see Git::Commands
|
|
18
|
+
#
|
|
19
|
+
# @api private
|
|
20
|
+
#
|
|
21
|
+
# @example List all refs in a remote
|
|
22
|
+
# ls_remote = Git::Commands::LsRemote.new(execution_context)
|
|
23
|
+
# ls_remote.call('origin')
|
|
24
|
+
#
|
|
25
|
+
# @example List only branches and tags
|
|
26
|
+
# ls_remote = Git::Commands::LsRemote.new(execution_context)
|
|
27
|
+
# ls_remote.call('origin', branches: true, tags: true)
|
|
28
|
+
#
|
|
29
|
+
# @example List only refs (no symbolic refs like HEAD)
|
|
30
|
+
# ls_remote = Git::Commands::LsRemote.new(execution_context)
|
|
31
|
+
# ls_remote.call('origin', refs: true)
|
|
32
|
+
#
|
|
33
|
+
# @example Filter by pattern
|
|
34
|
+
# ls_remote = Git::Commands::LsRemote.new(execution_context)
|
|
35
|
+
# ls_remote.call('origin', 'refs/heads/main')
|
|
36
|
+
#
|
|
37
|
+
# @example Detect the default branch of a remote
|
|
38
|
+
# ls_remote = Git::Commands::LsRemote.new(execution_context)
|
|
39
|
+
# ls_remote.call('origin', 'HEAD', symref: true)
|
|
40
|
+
#
|
|
41
|
+
class LsRemote < Git::Commands::Base
|
|
42
|
+
arguments do
|
|
43
|
+
literal 'ls-remote'
|
|
44
|
+
|
|
45
|
+
flag_option %i[branches b]
|
|
46
|
+
flag_option %i[heads h]
|
|
47
|
+
flag_option %i[tags t]
|
|
48
|
+
flag_option :refs
|
|
49
|
+
|
|
50
|
+
# Connectivity
|
|
51
|
+
value_option :upload_pack, inline: true
|
|
52
|
+
|
|
53
|
+
flag_option %i[quiet q]
|
|
54
|
+
flag_option :exit_code
|
|
55
|
+
flag_option :get_url
|
|
56
|
+
value_option :sort, inline: true
|
|
57
|
+
flag_option :symref
|
|
58
|
+
|
|
59
|
+
value_option %i[server_option o],
|
|
60
|
+
inline: true, repeatable: true
|
|
61
|
+
|
|
62
|
+
# Execution-only options (not emitted as CLI flags)
|
|
63
|
+
execution_option :timeout
|
|
64
|
+
|
|
65
|
+
end_of_options
|
|
66
|
+
|
|
67
|
+
operand :repository
|
|
68
|
+
operand :pattern, repeatable: true
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
# Exit status 2 means no matching refs were found (used with --exit-code)
|
|
72
|
+
allow_exit_status 0..2
|
|
73
|
+
|
|
74
|
+
# @!method call(*, **)
|
|
75
|
+
#
|
|
76
|
+
# @overload call(repository = nil, *patterns, **options)
|
|
77
|
+
#
|
|
78
|
+
# Execute the `git ls-remote` command
|
|
79
|
+
#
|
|
80
|
+
# @param repository [String, nil] The remote name or URL to query
|
|
81
|
+
#
|
|
82
|
+
# When nil, git uses the remote inferred from the current branch's
|
|
83
|
+
# tracking configuration, or "origin" if no tracking remote is set.
|
|
84
|
+
#
|
|
85
|
+
# @param patterns [Array<String>] One or more ref patterns to filter results
|
|
86
|
+
#
|
|
87
|
+
# When omitted, all references (after filtering via `--branches`, `--tags`,
|
|
88
|
+
# `--refs`) are shown. When specified, only refs matching one or more
|
|
89
|
+
# patterns are displayed.
|
|
90
|
+
#
|
|
91
|
+
# @param options [Hash] command options
|
|
92
|
+
#
|
|
93
|
+
# @option options [Boolean, nil] :branches (nil) limit output to refs under `refs/heads/`
|
|
94
|
+
#
|
|
95
|
+
# Alias: :b
|
|
96
|
+
#
|
|
97
|
+
# @option options [Boolean, nil] :heads (nil) limit output to refs under `refs/heads/`
|
|
98
|
+
#
|
|
99
|
+
# Deprecated: use `:branches` instead. Kept for backward compatibility with
|
|
100
|
+
# older git versions where `--heads` is the only supported flag.
|
|
101
|
+
#
|
|
102
|
+
# Alias: :h
|
|
103
|
+
#
|
|
104
|
+
# @option options [Boolean, nil] :tags (nil) limit output to refs under `refs/tags/`
|
|
105
|
+
#
|
|
106
|
+
# Alias: :t
|
|
107
|
+
#
|
|
108
|
+
# @option options [Boolean, nil] :refs (nil) exclude peeled tags and pseudorefs
|
|
109
|
+
# like `HEAD` from the output
|
|
110
|
+
#
|
|
111
|
+
# @option options [String] :upload_pack (nil) full path to `git-upload-pack`
|
|
112
|
+
# on the remote host
|
|
113
|
+
#
|
|
114
|
+
# Useful when accessing repositories via SSH where the daemon does not
|
|
115
|
+
# use the PATH configured by the user.
|
|
116
|
+
#
|
|
117
|
+
# @option options [Boolean, nil] :quiet (nil) do not print the remote URL to stderr
|
|
118
|
+
#
|
|
119
|
+
# Alias: :q
|
|
120
|
+
#
|
|
121
|
+
# @option options [Boolean, nil] :exit_code (nil) exit with status `2` when no
|
|
122
|
+
# matching refs are found in the remote repository
|
|
123
|
+
#
|
|
124
|
+
# Without this option, the command exits `0` whenever it successfully
|
|
125
|
+
# communicates with the remote, even if no refs match.
|
|
126
|
+
#
|
|
127
|
+
# @option options [Boolean, nil] :get_url (nil) expand and print the remote URL
|
|
128
|
+
# (respecting `url.<base>.insteadOf` config) and exit without contacting
|
|
129
|
+
# the remote
|
|
130
|
+
#
|
|
131
|
+
# @option options [String] :sort (nil) sort output by the given key
|
|
132
|
+
#
|
|
133
|
+
# Prefix `-` for descending order. Supports `"version:refname"` or
|
|
134
|
+
# `"v:refname"`. See `git for-each-ref` for sort key documentation.
|
|
135
|
+
#
|
|
136
|
+
# @option options [Boolean, nil] :symref (nil) show the underlying ref pointed to by
|
|
137
|
+
# symbolic refs
|
|
138
|
+
#
|
|
139
|
+
# The `upload-pack` protocol currently surfaces only the `HEAD` symref,
|
|
140
|
+
# so that is typically the only symref shown.
|
|
141
|
+
#
|
|
142
|
+
# @option options [String, Array<String>] :server_option (nil) transmit a
|
|
143
|
+
# string to the server when communicating using protocol version 2
|
|
144
|
+
#
|
|
145
|
+
# The string must not contain NUL or LF characters. Repeatable by
|
|
146
|
+
# passing an Array. Alias: :o
|
|
147
|
+
#
|
|
148
|
+
# @option options [Numeric] :timeout (nil) execution timeout in seconds
|
|
149
|
+
#
|
|
150
|
+
# @return [Git::CommandLineResult] the result of calling `git ls-remote`
|
|
151
|
+
#
|
|
152
|
+
# @raise [Git::FailedError] if git exits outside the allowed range (exit code > 2)
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
end
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'git/commands/base'
|
|
4
|
+
|
|
5
|
+
module Git
|
|
6
|
+
module Commands
|
|
7
|
+
# Implements the `git ls-tree` command
|
|
8
|
+
#
|
|
9
|
+
# Lists the contents of a tree object, showing the mode, type, object
|
|
10
|
+
# name, and file name of each item. Supports recursive listing, output
|
|
11
|
+
# format control, and path filtering.
|
|
12
|
+
#
|
|
13
|
+
# @note `arguments` block audited against https://git-scm.com/docs/git-ls-tree/2.53.0
|
|
14
|
+
#
|
|
15
|
+
# @see https://git-scm.com/docs/git-ls-tree git-ls-tree
|
|
16
|
+
#
|
|
17
|
+
# @api private
|
|
18
|
+
#
|
|
19
|
+
# @example List the top-level tree of HEAD
|
|
20
|
+
# ls_tree = Git::Commands::LsTree.new(execution_context)
|
|
21
|
+
# ls_tree.call('HEAD')
|
|
22
|
+
#
|
|
23
|
+
# @example Recursively list all files under HEAD
|
|
24
|
+
# ls_tree = Git::Commands::LsTree.new(execution_context)
|
|
25
|
+
# ls_tree.call('HEAD', r: true)
|
|
26
|
+
#
|
|
27
|
+
# @example List only file names recursively
|
|
28
|
+
# ls_tree = Git::Commands::LsTree.new(execution_context)
|
|
29
|
+
# ls_tree.call('HEAD', r: true, name_only: true)
|
|
30
|
+
#
|
|
31
|
+
# @example List entries under a specific path
|
|
32
|
+
# ls_tree = Git::Commands::LsTree.new(execution_context)
|
|
33
|
+
# ls_tree.call('HEAD', 'lib/')
|
|
34
|
+
#
|
|
35
|
+
class LsTree < Git::Commands::Base
|
|
36
|
+
arguments do
|
|
37
|
+
literal 'ls-tree'
|
|
38
|
+
|
|
39
|
+
# Listing behavior
|
|
40
|
+
flag_option :d
|
|
41
|
+
flag_option :r
|
|
42
|
+
flag_option :t
|
|
43
|
+
flag_option %i[long l]
|
|
44
|
+
flag_option :z
|
|
45
|
+
|
|
46
|
+
# Output format
|
|
47
|
+
flag_option %i[name_only name_status]
|
|
48
|
+
flag_option :object_only
|
|
49
|
+
flag_option :full_name
|
|
50
|
+
flag_option :full_tree
|
|
51
|
+
flag_or_value_option :abbrev, inline: true
|
|
52
|
+
value_option :format, inline: true
|
|
53
|
+
|
|
54
|
+
end_of_options
|
|
55
|
+
|
|
56
|
+
operand :tree_ish, required: true
|
|
57
|
+
operand :path, repeatable: true
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
# @!method call(*, **)
|
|
61
|
+
#
|
|
62
|
+
# @overload call(tree_ish, *path, **options)
|
|
63
|
+
#
|
|
64
|
+
# Execute the git ls-tree command
|
|
65
|
+
#
|
|
66
|
+
# @param tree_ish [String] the tree object to list (SHA, branch name, tag, etc.)
|
|
67
|
+
#
|
|
68
|
+
# @param path [Array<String>] optional path(s) to restrict the listing
|
|
69
|
+
#
|
|
70
|
+
# When given, only entries matching these paths are shown.
|
|
71
|
+
#
|
|
72
|
+
# @param options [Hash] command options
|
|
73
|
+
#
|
|
74
|
+
# @option options [Boolean, nil] :d (nil) show only the named tree entry itself,
|
|
75
|
+
# not its children
|
|
76
|
+
#
|
|
77
|
+
# @option options [Boolean, nil] :r (nil) recurse into sub-trees
|
|
78
|
+
#
|
|
79
|
+
# @option options [Boolean, nil] :t (nil) show tree entries even when going to
|
|
80
|
+
# recurse them
|
|
81
|
+
#
|
|
82
|
+
# Implies recursive listing (`:r`) in git.
|
|
83
|
+
#
|
|
84
|
+
# @option options [Boolean, nil] :long (nil) show object size of blob (file)
|
|
85
|
+
# objects
|
|
86
|
+
#
|
|
87
|
+
# Cannot be combined with `:name_only` or `:object_only`.
|
|
88
|
+
#
|
|
89
|
+
# Alias: :l
|
|
90
|
+
#
|
|
91
|
+
# @option options [Boolean, nil] :z (nil) use NUL (`\0`) as line terminator
|
|
92
|
+
# instead of newline, and do not quote filenames
|
|
93
|
+
#
|
|
94
|
+
# @option options [Boolean, nil] :name_only (nil) list only filenames, one per
|
|
95
|
+
# line
|
|
96
|
+
#
|
|
97
|
+
# Cannot be combined with `:object_only` or `:long`.
|
|
98
|
+
#
|
|
99
|
+
# Alias: :name_status
|
|
100
|
+
#
|
|
101
|
+
# @option options [Boolean, nil] :object_only (nil) list only the object names
|
|
102
|
+
# (SHAs), one per line
|
|
103
|
+
#
|
|
104
|
+
# Cannot be combined with `:name_only` or `:long`.
|
|
105
|
+
#
|
|
106
|
+
# @option options [Boolean, nil] :full_name (nil) show full path names instead
|
|
107
|
+
# of paths relative to the current working directory
|
|
108
|
+
#
|
|
109
|
+
# @option options [Boolean, nil] :full_tree (nil) do not limit the listing to
|
|
110
|
+
# the current working directory; implies `:full_name`
|
|
111
|
+
#
|
|
112
|
+
# @option options [Boolean, String, nil] :abbrev (nil) use abbreviated object names
|
|
113
|
+
#
|
|
114
|
+
# When `true`, uses git's default abbreviated name length. When a string
|
|
115
|
+
# (e.g. `'8'`), uses exactly that many hex digits.
|
|
116
|
+
#
|
|
117
|
+
# @option options [String] :format (nil) a format string that interpolates
|
|
118
|
+
# `%(fieldname)` placeholders from tree entries
|
|
119
|
+
#
|
|
120
|
+
# Cannot be combined with `:long`, `:name_only`, or `:object_only`.
|
|
121
|
+
#
|
|
122
|
+
# @return [Git::CommandLineResult] the result of calling `git ls-tree`
|
|
123
|
+
#
|
|
124
|
+
# @raise [ArgumentError] if unsupported options are provided
|
|
125
|
+
#
|
|
126
|
+
# @raise [ArgumentError] if the tree-ish operand is missing
|
|
127
|
+
#
|
|
128
|
+
# @raise [Git::FailedError] if git exits with a non-zero exit status
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
end
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'git/commands/base'
|
|
4
|
+
|
|
5
|
+
module Git
|
|
6
|
+
module Commands
|
|
7
|
+
module Maintenance
|
|
8
|
+
# Add the current repository to the maintenance config
|
|
9
|
+
#
|
|
10
|
+
# @example Register the repository for maintenance
|
|
11
|
+
# Git::Commands::Maintenance::Register.new(execution_context).call
|
|
12
|
+
#
|
|
13
|
+
# @example Register with a custom config file
|
|
14
|
+
# Git::Commands::Maintenance::Register.new(execution_context).call(config_file: '/path/to/config')
|
|
15
|
+
#
|
|
16
|
+
# @note `arguments` block audited against https://git-scm.com/docs/git-maintenance/2.54.0
|
|
17
|
+
#
|
|
18
|
+
# @see Git::Commands::Maintenance Git::Commands::Maintenance for the full sub-command list
|
|
19
|
+
#
|
|
20
|
+
# @see https://git-scm.com/docs/git-maintenance git-maintenance documentation
|
|
21
|
+
#
|
|
22
|
+
# @api private
|
|
23
|
+
#
|
|
24
|
+
class Register < Git::Commands::Base
|
|
25
|
+
requires_git_version '2.30.0'
|
|
26
|
+
|
|
27
|
+
arguments do
|
|
28
|
+
literal 'maintenance'
|
|
29
|
+
literal 'register'
|
|
30
|
+
|
|
31
|
+
flag_or_value_option :config_file, negatable: true
|
|
32
|
+
execution_option :env
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# @!method call(*, **)
|
|
36
|
+
#
|
|
37
|
+
# @overload call(**options)
|
|
38
|
+
#
|
|
39
|
+
# Initialize config values so scheduled maintenance will start running
|
|
40
|
+
#
|
|
41
|
+
# This adds the repository to the `maintenance.repo` config variable
|
|
42
|
+
# in the current user's global config (or the specified config file)
|
|
43
|
+
# and enables recommended configuration values for
|
|
44
|
+
# `maintenance.<task>.schedule`.
|
|
45
|
+
#
|
|
46
|
+
# Also sets `maintenance.strategy` to 'incremental' if not previously set,
|
|
47
|
+
# and disables foreground maintenance by setting `maintenance.auto = false`
|
|
48
|
+
# in the current repository.
|
|
49
|
+
#
|
|
50
|
+
# @param options [Hash] command options
|
|
51
|
+
#
|
|
52
|
+
# @option options [Boolean, String, nil] :config_file (nil) use a specified
|
|
53
|
+
# config file instead of the global config (`--config-file`)
|
|
54
|
+
#
|
|
55
|
+
# When a String, the path is passed as `--config-file <file>`.
|
|
56
|
+
#
|
|
57
|
+
# @option options [Boolean, nil] :no_config_file (nil) disable the config file
|
|
58
|
+
# (`--no-config-file`)
|
|
59
|
+
#
|
|
60
|
+
# @option options [Hash] :env (nil) environment variables to set for the git
|
|
61
|
+
# process; merged with the default environment; not passed to the git CLI
|
|
62
|
+
#
|
|
63
|
+
# @return [Git::CommandLineResult] the result of calling `git maintenance register`
|
|
64
|
+
#
|
|
65
|
+
# @raise [ArgumentError] if unsupported options are provided
|
|
66
|
+
#
|
|
67
|
+
# @raise [Git::FailedError] if git exits with a non-zero exit status
|
|
68
|
+
#
|
|
69
|
+
# @raise [Git::VersionError] if git version is below 2.30.0
|
|
70
|
+
#
|
|
71
|
+
# @api public
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
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 Maintenance
|
|
8
|
+
# Run one or more maintenance tasks
|
|
9
|
+
#
|
|
10
|
+
# @example Run all enabled maintenance tasks
|
|
11
|
+
# Git::Commands::Maintenance::Run.new(execution_context).call
|
|
12
|
+
#
|
|
13
|
+
# @example Run specific tasks in order
|
|
14
|
+
# Git::Commands::Maintenance::Run.new(execution_context).call(task: ['gc', 'commit-graph'])
|
|
15
|
+
#
|
|
16
|
+
# @example Run tasks only if thresholds are met
|
|
17
|
+
# Git::Commands::Maintenance::Run.new(execution_context).call(auto: true)
|
|
18
|
+
#
|
|
19
|
+
# @example Run scheduled tasks at a specific frequency
|
|
20
|
+
# Git::Commands::Maintenance::Run.new(execution_context).call(schedule: 'hourly')
|
|
21
|
+
#
|
|
22
|
+
# @note `arguments` block audited against https://git-scm.com/docs/git-maintenance/2.54.0
|
|
23
|
+
#
|
|
24
|
+
# @see Git::Commands::Maintenance Git::Commands::Maintenance for the full sub-command list
|
|
25
|
+
#
|
|
26
|
+
# @see https://git-scm.com/docs/git-maintenance git-maintenance documentation
|
|
27
|
+
#
|
|
28
|
+
# @api private
|
|
29
|
+
#
|
|
30
|
+
class Run < Git::Commands::Base
|
|
31
|
+
requires_git_version '2.30.0'
|
|
32
|
+
|
|
33
|
+
arguments do
|
|
34
|
+
literal 'maintenance'
|
|
35
|
+
literal 'run'
|
|
36
|
+
|
|
37
|
+
flag_option :auto, negatable: true
|
|
38
|
+
flag_option :detach, negatable: true
|
|
39
|
+
flag_option :scheduled, negatable: true
|
|
40
|
+
flag_or_value_option :schedule, negatable: true, inline: true
|
|
41
|
+
flag_option :quiet, negatable: true
|
|
42
|
+
value_option :task, inline: true, repeatable: true
|
|
43
|
+
execution_option :env
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# @!method call(*, **)
|
|
47
|
+
#
|
|
48
|
+
# @overload call(**options)
|
|
49
|
+
#
|
|
50
|
+
# Run one or more maintenance tasks
|
|
51
|
+
#
|
|
52
|
+
# @param options [Hash] command options
|
|
53
|
+
#
|
|
54
|
+
# @option options [Boolean, nil] :auto (nil) run tasks only if thresholds are met (`--auto`)
|
|
55
|
+
#
|
|
56
|
+
# Not compatible with the `:schedule` option.
|
|
57
|
+
#
|
|
58
|
+
# @option options [Boolean, nil] :no_auto (nil) disable threshold-based execution (`--no-auto`)
|
|
59
|
+
#
|
|
60
|
+
# @option options [Boolean, nil] :detach (nil) detach the maintenance process from the current terminal
|
|
61
|
+
# (`--detach`)
|
|
62
|
+
#
|
|
63
|
+
# @option options [Boolean, nil] :no_detach (nil) do not detach the maintenance process (`--no-detach`)
|
|
64
|
+
#
|
|
65
|
+
# @option options [Boolean, nil] :scheduled (nil) run tasks that are due according to schedule config
|
|
66
|
+
# (`--scheduled`)
|
|
67
|
+
#
|
|
68
|
+
# @option options [Boolean, nil] :no_scheduled (nil) do not limit runs to scheduled tasks (`--no-scheduled`)
|
|
69
|
+
#
|
|
70
|
+
# @option options [Boolean, String, nil] :schedule (nil) run tasks only if time conditions are met
|
|
71
|
+
# (`--schedule`)
|
|
72
|
+
#
|
|
73
|
+
# When a String (`'hourly'`, `'daily'`, or `'weekly'`), runs only tasks scheduled
|
|
74
|
+
# for that frequency; the string is emitted as `--schedule=<frequency>`.
|
|
75
|
+
#
|
|
76
|
+
# @option options [Boolean, nil] :no_schedule (nil) disable schedule-based filtering (`--no-schedule`)
|
|
77
|
+
#
|
|
78
|
+
# @option options [Boolean, nil] :quiet (nil) suppress progress and informational messages (`--quiet`)
|
|
79
|
+
#
|
|
80
|
+
# @option options [Boolean, nil] :no_quiet (nil) enable progress and informational messages (`--no-quiet`)
|
|
81
|
+
#
|
|
82
|
+
# @option options [Array<String>, String] :task (nil) specify which task(s) to run
|
|
83
|
+
#
|
|
84
|
+
# If specified, only the given tasks are run in the specified order.
|
|
85
|
+
# Otherwise, tasks are determined by config options.
|
|
86
|
+
# Valid task names: `commit-graph`, `prefetch`, `gc`, `loose-objects`,
|
|
87
|
+
# `incremental-repack`, `pack-refs`, `reflog-expire`, `rerere-gc`, `worktree-prune`.
|
|
88
|
+
#
|
|
89
|
+
# @option options [Hash] :env (nil) environment variables to set for the git
|
|
90
|
+
# process; merged with the default environment; not passed to the git CLI
|
|
91
|
+
#
|
|
92
|
+
# @return [Git::CommandLineResult] the result of calling `git maintenance run`
|
|
93
|
+
#
|
|
94
|
+
# @raise [ArgumentError] if unsupported options are provided
|
|
95
|
+
#
|
|
96
|
+
# @raise [Git::FailedError] if git exits with a non-zero exit status
|
|
97
|
+
#
|
|
98
|
+
# @raise [Git::VersionError] if git version is below 2.30.0
|
|
99
|
+
#
|
|
100
|
+
# @api public
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
end
|