1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
|
# (C) 2011-2025 magicant
# Completion script for the "git-add" command.
# Supports Git 2.48.1
function completion/git-add {
WORDS=(git add "${WORDS[2,-1]}")
command -f completion//reexecute
}
function completion/git::add:arg {
OPTIONS=( #>#
"A --all; add all files including untracked files"
"--chmod:; override executable bit of added files"
"n --dry-run; don't actually add files"
"e --edit; edit patch hunks before adding"
"f --force; add ignored files"
"--ignore-errors; continue adding other files on an error"
"--ignore-missing; ignore missing files (with -n)"
"N --intent-to-add; add filepaths but not their contents"
"i --interactive; enter the interactive mode"
"--no-all --no-ignore-removal; add only new and modified files"
"--no-warn-embedded-repo; allow adding embedded repositories"
"p --patch; interactively choose patch hunks to add"
"--pathspec-file-nul; use nul as separator for pathspecs"
"--pathspec-from-file:; read pathspecs from file"
"--refresh; refresh stat info in the index without adding"
"--renormalize; re-apply \"clean\" process"
"--sparse; update index outside of sparse-checkout cone"
"u --update; add tracked files only; don't add new files"
"v --verbose; print affected filenames"
) #<#
command -f completion//parseoptions -n
case $ARGOPT in
(-)
command -f completion//completeoptions
;;
(--chmod)
complete -P "$PREFIX" -- -x +x
;;
(--pathspec-from-file)
complete -P "$PREFIX" -f
;;
('')
command -f completion/git::add:opr
;;
esac
}
# only complete files that can be added
function completion/git::add:opr {
typeset force= i=2
while [ $i -le ${WORDS[#]} ]; do
case ${WORDS[i]} in
(--)
break;;
(--force)
force=true; break;;
(--*)
;;
(-*f*)
force=true; break;;
esac
i=$((i+1))
done
command -f completion/git::completefilteredpath '^.[^ ]' \
--ignore-submodules=dirty ${force:+--ignored}
}
# vim: set ft=sh ts=8 sts=8 sw=8 et:
|