Merge branch 'maint'
* maint: fix memory leak in parse_object when check_sha1_signature fails name-rev: tolerate clock skew in committer dates Update bash completion for git-config options Teach bash completion about recent log long options Teach bash completion about 'git remote update' Update bash completion header documentation Remove a duplicate --not option in bash completion Teach bash completion about git-shortlog Hide the plumbing diff-{files,index,tree} from bash completion Update bash completion to ignore some more plumbing commands
This commit is contained in:
commit
18bece4367
@ -4,6 +4,8 @@
|
|||||||
#include "tag.h"
|
#include "tag.h"
|
||||||
#include "refs.h"
|
#include "refs.h"
|
||||||
|
|
||||||
|
#define CUTOFF_DATE_SLOP 86400 /* one day */
|
||||||
|
|
||||||
static const char name_rev_usage[] =
|
static const char name_rev_usage[] =
|
||||||
"git-name-rev [--tags | --refs=<pattern>] ( --all | --stdin | committish [committish...] )\n";
|
"git-name-rev [--tags | --refs=<pattern>] ( --all | --stdin | committish [committish...] )\n";
|
||||||
|
|
||||||
@ -216,6 +218,8 @@ int cmd_name_rev(int argc, const char **argv, const char *prefix)
|
|||||||
add_object_array((struct object *)commit, *argv, &revs);
|
add_object_array((struct object *)commit, *argv, &revs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (cutoff)
|
||||||
|
cutoff = cutoff - CUTOFF_DATE_SLOP;
|
||||||
for_each_ref(name_ref, &data);
|
for_each_ref(name_ref, &data);
|
||||||
|
|
||||||
if (transform_stdin) {
|
if (transform_stdin) {
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
#
|
#
|
||||||
# bash completion support for core Git.
|
# bash completion support for core Git.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2006,2007 Shawn Pearce
|
# Copyright (C) 2006,2007 Shawn O. Pearce <spearce@spearce.org>
|
||||||
# Conceptually based on gitcompletion (http://gitweb.hawaga.org.uk/).
|
# Conceptually based on gitcompletion (http://gitweb.hawaga.org.uk/).
|
||||||
|
# Distributed under the GNU General Public License, version 2.0.
|
||||||
#
|
#
|
||||||
# The contained completion routines provide support for completing:
|
# The contained completion routines provide support for completing:
|
||||||
#
|
#
|
||||||
@ -11,6 +12,7 @@
|
|||||||
# *) .git/remotes file names
|
# *) .git/remotes file names
|
||||||
# *) git 'subcommands'
|
# *) git 'subcommands'
|
||||||
# *) tree paths within 'ref:path/to/file' expressions
|
# *) tree paths within 'ref:path/to/file' expressions
|
||||||
|
# *) common --long-options
|
||||||
#
|
#
|
||||||
# To use these routines:
|
# To use these routines:
|
||||||
#
|
#
|
||||||
@ -31,6 +33,17 @@
|
|||||||
# are currently in a git repository. The %s token will be
|
# are currently in a git repository. The %s token will be
|
||||||
# the name of the current branch.
|
# the name of the current branch.
|
||||||
#
|
#
|
||||||
|
# To submit patches:
|
||||||
|
#
|
||||||
|
# *) Read Documentation/SubmittingPatches
|
||||||
|
# *) Send all patches to the current maintainer:
|
||||||
|
#
|
||||||
|
# "Shawn O. Pearce" <spearce@spearce.org>
|
||||||
|
#
|
||||||
|
# *) Always CC the Git mailing list:
|
||||||
|
#
|
||||||
|
# git@vger.kernel.org
|
||||||
|
#
|
||||||
|
|
||||||
__gitdir ()
|
__gitdir ()
|
||||||
{
|
{
|
||||||
@ -262,6 +275,7 @@ __git_commands ()
|
|||||||
applypatch) : ask gittus;;
|
applypatch) : ask gittus;;
|
||||||
archimport) : import;;
|
archimport) : import;;
|
||||||
cat-file) : plumbing;;
|
cat-file) : plumbing;;
|
||||||
|
check-attr) : plumbing;;
|
||||||
check-ref-format) : plumbing;;
|
check-ref-format) : plumbing;;
|
||||||
commit-tree) : plumbing;;
|
commit-tree) : plumbing;;
|
||||||
convert-objects) : plumbing;;
|
convert-objects) : plumbing;;
|
||||||
@ -269,10 +283,15 @@ __git_commands ()
|
|||||||
cvsimport) : import;;
|
cvsimport) : import;;
|
||||||
cvsserver) : daemon;;
|
cvsserver) : daemon;;
|
||||||
daemon) : daemon;;
|
daemon) : daemon;;
|
||||||
|
diff-files) : plumbing;;
|
||||||
|
diff-index) : plumbing;;
|
||||||
|
diff-tree) : plumbing;;
|
||||||
fast-import) : import;;
|
fast-import) : import;;
|
||||||
fsck-objects) : plumbing;;
|
fsck-objects) : plumbing;;
|
||||||
|
fetch--tool) : plumbing;;
|
||||||
fetch-pack) : plumbing;;
|
fetch-pack) : plumbing;;
|
||||||
fmt-merge-msg) : plumbing;;
|
fmt-merge-msg) : plumbing;;
|
||||||
|
for-each-ref) : plumbing;;
|
||||||
hash-object) : plumbing;;
|
hash-object) : plumbing;;
|
||||||
http-*) : transport;;
|
http-*) : transport;;
|
||||||
index-pack) : plumbing;;
|
index-pack) : plumbing;;
|
||||||
@ -573,13 +592,13 @@ _git_log ()
|
|||||||
__gitcomp "
|
__gitcomp "
|
||||||
--max-count= --max-age= --since= --after=
|
--max-count= --max-age= --since= --after=
|
||||||
--min-age= --before= --until=
|
--min-age= --before= --until=
|
||||||
--root --not --topo-order --date-order
|
--root --topo-order --date-order --reverse
|
||||||
--no-merges
|
--no-merges
|
||||||
--abbrev-commit --abbrev=
|
--abbrev-commit --abbrev=
|
||||||
--relative-date
|
--relative-date
|
||||||
--author= --committer= --grep=
|
--author= --committer= --grep=
|
||||||
--all-match
|
--all-match
|
||||||
--pretty= --name-status --name-only
|
--pretty= --name-status --name-only --raw
|
||||||
--not --all
|
--not --all
|
||||||
"
|
"
|
||||||
return
|
return
|
||||||
@ -745,9 +764,11 @@ _git_config ()
|
|||||||
case "$cur" in
|
case "$cur" in
|
||||||
--*)
|
--*)
|
||||||
__gitcomp "
|
__gitcomp "
|
||||||
--global --list --replace-all
|
--global --system
|
||||||
|
--list --replace-all
|
||||||
--get --get-all --get-regexp
|
--get --get-all --get-regexp
|
||||||
--add --unset --unset-all
|
--add --unset --unset-all
|
||||||
|
--remove-section --rename-section
|
||||||
"
|
"
|
||||||
return
|
return
|
||||||
;;
|
;;
|
||||||
@ -766,7 +787,10 @@ _git_config ()
|
|||||||
remote.*.*)
|
remote.*.*)
|
||||||
local pfx="${cur%.*}."
|
local pfx="${cur%.*}."
|
||||||
cur="${cur##*.}"
|
cur="${cur##*.}"
|
||||||
__gitcomp "url fetch push" "$pfx" "$cur"
|
__gitcomp "
|
||||||
|
url fetch push skipDefaultUpdate
|
||||||
|
receivepack uploadpack tagopt
|
||||||
|
" "$pfx" "$cur"
|
||||||
return
|
return
|
||||||
;;
|
;;
|
||||||
remote.*)
|
remote.*)
|
||||||
@ -816,6 +840,9 @@ _git_config ()
|
|||||||
format.headers
|
format.headers
|
||||||
gitcvs.enabled
|
gitcvs.enabled
|
||||||
gitcvs.logfile
|
gitcvs.logfile
|
||||||
|
gitcvs.allbinary
|
||||||
|
gitcvs.dbname gitcvs.dbdriver gitcvs.dbuser gitcvs.dvpass
|
||||||
|
gc.packrefs
|
||||||
gc.reflogexpire
|
gc.reflogexpire
|
||||||
gc.reflogexpireunreachable
|
gc.reflogexpireunreachable
|
||||||
gc.rerereresolved
|
gc.rerereresolved
|
||||||
@ -832,9 +859,11 @@ _git_config ()
|
|||||||
i18n.commitEncoding
|
i18n.commitEncoding
|
||||||
i18n.logOutputEncoding
|
i18n.logOutputEncoding
|
||||||
log.showroot
|
log.showroot
|
||||||
|
merge.tool
|
||||||
merge.summary
|
merge.summary
|
||||||
merge.verbosity
|
merge.verbosity
|
||||||
pack.window
|
pack.window
|
||||||
|
pack.depth
|
||||||
pull.octopus
|
pull.octopus
|
||||||
pull.twohead
|
pull.twohead
|
||||||
repack.useDeltaBaseOffset
|
repack.useDeltaBaseOffset
|
||||||
@ -858,13 +887,13 @@ _git_remote ()
|
|||||||
while [ $c -lt $COMP_CWORD ]; do
|
while [ $c -lt $COMP_CWORD ]; do
|
||||||
i="${COMP_WORDS[c]}"
|
i="${COMP_WORDS[c]}"
|
||||||
case "$i" in
|
case "$i" in
|
||||||
add|show|prune) command="$i"; break ;;
|
add|show|prune|update) command="$i"; break ;;
|
||||||
esac
|
esac
|
||||||
c=$((++c))
|
c=$((++c))
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ $c -eq $COMP_CWORD -a -z "$command" ]; then
|
if [ $c -eq $COMP_CWORD -a -z "$command" ]; then
|
||||||
__gitcomp "add show prune"
|
__gitcomp "add show prune update"
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -872,6 +901,18 @@ _git_remote ()
|
|||||||
show|prune)
|
show|prune)
|
||||||
__gitcomp "$(__git_remotes)"
|
__gitcomp "$(__git_remotes)"
|
||||||
;;
|
;;
|
||||||
|
update)
|
||||||
|
local i c='' IFS=$'\n'
|
||||||
|
for i in $(git --git-dir="$(__gitdir)" config --list); do
|
||||||
|
case "$i" in
|
||||||
|
remotes.*)
|
||||||
|
i="${i#remotes.}"
|
||||||
|
c="$c ${i/=*/}"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
__gitcomp "$c"
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
COMPREPLY=()
|
COMPREPLY=()
|
||||||
;;
|
;;
|
||||||
@ -890,6 +931,26 @@ _git_reset ()
|
|||||||
__gitcomp "$(__git_refs)"
|
__gitcomp "$(__git_refs)"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_git_shortlog ()
|
||||||
|
{
|
||||||
|
local cur="${COMP_WORDS[COMP_CWORD]}"
|
||||||
|
case "$cur" in
|
||||||
|
--*)
|
||||||
|
__gitcomp "
|
||||||
|
--max-count= --max-age= --since= --after=
|
||||||
|
--min-age= --before= --until=
|
||||||
|
--no-merges
|
||||||
|
--author= --committer= --grep=
|
||||||
|
--all-match
|
||||||
|
--not --all
|
||||||
|
--numbered --summary
|
||||||
|
"
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
__git_complete_revlist
|
||||||
|
}
|
||||||
|
|
||||||
_git_show ()
|
_git_show ()
|
||||||
{
|
{
|
||||||
local cur="${COMP_WORDS[COMP_CWORD]}"
|
local cur="${COMP_WORDS[COMP_CWORD]}"
|
||||||
@ -947,7 +1008,6 @@ _git ()
|
|||||||
commit) _git_commit ;;
|
commit) _git_commit ;;
|
||||||
config) _git_config ;;
|
config) _git_config ;;
|
||||||
diff) _git_diff ;;
|
diff) _git_diff ;;
|
||||||
diff-tree) _git_diff_tree ;;
|
|
||||||
fetch) _git_fetch ;;
|
fetch) _git_fetch ;;
|
||||||
format-patch) _git_format_patch ;;
|
format-patch) _git_format_patch ;;
|
||||||
gc) _git_gc ;;
|
gc) _git_gc ;;
|
||||||
@ -962,6 +1022,7 @@ _git ()
|
|||||||
rebase) _git_rebase ;;
|
rebase) _git_rebase ;;
|
||||||
remote) _git_remote ;;
|
remote) _git_remote ;;
|
||||||
reset) _git_reset ;;
|
reset) _git_reset ;;
|
||||||
|
shortlog) _git_shortlog ;;
|
||||||
show) _git_show ;;
|
show) _git_show ;;
|
||||||
show-branch) _git_log ;;
|
show-branch) _git_log ;;
|
||||||
whatchanged) _git_log ;;
|
whatchanged) _git_log ;;
|
||||||
@ -992,7 +1053,6 @@ complete -o default -o nospace -F _git_cherry git-cherry
|
|||||||
complete -o default -o nospace -F _git_cherry_pick git-cherry-pick
|
complete -o default -o nospace -F _git_cherry_pick git-cherry-pick
|
||||||
complete -o default -o nospace -F _git_commit git-commit
|
complete -o default -o nospace -F _git_commit git-commit
|
||||||
complete -o default -o nospace -F _git_diff git-diff
|
complete -o default -o nospace -F _git_diff git-diff
|
||||||
complete -o default -o nospace -F _git_diff_tree git-diff-tree
|
|
||||||
complete -o default -o nospace -F _git_fetch git-fetch
|
complete -o default -o nospace -F _git_fetch git-fetch
|
||||||
complete -o default -o nospace -F _git_format_patch git-format-patch
|
complete -o default -o nospace -F _git_format_patch git-format-patch
|
||||||
complete -o default -o nospace -F _git_gc git-gc
|
complete -o default -o nospace -F _git_gc git-gc
|
||||||
@ -1008,6 +1068,7 @@ complete -o default -o nospace -F _git_rebase git-rebase
|
|||||||
complete -o default -o nospace -F _git_config git-config
|
complete -o default -o nospace -F _git_config git-config
|
||||||
complete -o default -o nospace -F _git_remote git-remote
|
complete -o default -o nospace -F _git_remote git-remote
|
||||||
complete -o default -o nospace -F _git_reset git-reset
|
complete -o default -o nospace -F _git_reset git-reset
|
||||||
|
complete -o default -o nospace -F _git_shortlog git-shortlog
|
||||||
complete -o default -o nospace -F _git_show git-show
|
complete -o default -o nospace -F _git_show git-show
|
||||||
complete -o default -o nospace -F _git_log git-show-branch
|
complete -o default -o nospace -F _git_log git-show-branch
|
||||||
complete -o default -o nospace -F _git_log git-whatchanged
|
complete -o default -o nospace -F _git_log git-whatchanged
|
||||||
@ -1023,7 +1084,6 @@ complete -o default -o nospace -F _git git.exe
|
|||||||
complete -o default -o nospace -F _git_branch git-branch.exe
|
complete -o default -o nospace -F _git_branch git-branch.exe
|
||||||
complete -o default -o nospace -F _git_cherry git-cherry.exe
|
complete -o default -o nospace -F _git_cherry git-cherry.exe
|
||||||
complete -o default -o nospace -F _git_diff git-diff.exe
|
complete -o default -o nospace -F _git_diff git-diff.exe
|
||||||
complete -o default -o nospace -F _git_diff_tree git-diff-tree.exe
|
|
||||||
complete -o default -o nospace -F _git_format_patch git-format-patch.exe
|
complete -o default -o nospace -F _git_format_patch git-format-patch.exe
|
||||||
complete -o default -o nospace -F _git_log git-log.exe
|
complete -o default -o nospace -F _git_log git-log.exe
|
||||||
complete -o default -o nospace -F _git_ls_tree git-ls-tree.exe
|
complete -o default -o nospace -F _git_ls_tree git-ls-tree.exe
|
||||||
@ -1031,6 +1091,7 @@ complete -o default -o nospace -F _git_merge_base git-merge-base.exe
|
|||||||
complete -o default -o nospace -F _git_name_rev git-name-rev.exe
|
complete -o default -o nospace -F _git_name_rev git-name-rev.exe
|
||||||
complete -o default -o nospace -F _git_push git-push.exe
|
complete -o default -o nospace -F _git_push git-push.exe
|
||||||
complete -o default -o nospace -F _git_config git-config
|
complete -o default -o nospace -F _git_config git-config
|
||||||
|
complete -o default -o nospace -F _git_shortlog git-shortlog.exe
|
||||||
complete -o default -o nospace -F _git_show git-show.exe
|
complete -o default -o nospace -F _git_show git-show.exe
|
||||||
complete -o default -o nospace -F _git_log git-show-branch.exe
|
complete -o default -o nospace -F _git_log git-show-branch.exe
|
||||||
complete -o default -o nospace -F _git_log git-whatchanged.exe
|
complete -o default -o nospace -F _git_log git-whatchanged.exe
|
||||||
|
1
object.c
1
object.c
@ -176,6 +176,7 @@ struct object *parse_object(const unsigned char *sha1)
|
|||||||
if (buffer) {
|
if (buffer) {
|
||||||
struct object *obj;
|
struct object *obj;
|
||||||
if (check_sha1_signature(sha1, buffer, size, typename(type)) < 0) {
|
if (check_sha1_signature(sha1, buffer, size, typename(type)) < 0) {
|
||||||
|
free(buffer);
|
||||||
error("sha1 mismatch %s\n", sha1_to_hex(sha1));
|
error("sha1 mismatch %s\n", sha1_to_hex(sha1));
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user