aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2007-05-24 21:35:29 -0700
committerJunio C Hamano <junkio@cox.net>2007-05-24 21:35:29 -0700
commit18bece43675ea0dc9022a7868865e02808b7af7f (patch)
tree1d22ccd8b1bd5cac8e1bbc4c31c72f21b66c2cb6
parent56752391a8c0c591853b276e4fa0b45c34ced181 (diff)
parent6d9d26d82623b8189fa88ebb7b47e45f8ccbb3b1 (diff)
downloadgit-18bece43675ea0dc9022a7868865e02808b7af7f.tar.gz
git-18bece43675ea0dc9022a7868865e02808b7af7f.tar.xz
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
-rw-r--r--builtin-name-rev.c4
-rwxr-xr-xcontrib/completion/git-completion.bash81
-rw-r--r--object.c1
3 files changed, 76 insertions, 10 deletions
diff --git a/builtin-name-rev.c b/builtin-name-rev.c
index a639e2fed..d3c42ed67 100644
--- a/builtin-name-rev.c
+++ b/builtin-name-rev.c
@@ -4,6 +4,8 @@
#include "tag.h"
#include "refs.h"
+#define CUTOFF_DATE_SLOP 86400 /* one day */
+
static const char name_rev_usage[] =
"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);
}
+ if (cutoff)
+ cutoff = cutoff - CUTOFF_DATE_SLOP;
for_each_ref(name_ref, &data);
if (transform_stdin) {
diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
index 46356e8a2..9e72f0f7b 100755
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -1,8 +1,9 @@
#
# 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/).
+# Distributed under the GNU General Public License, version 2.0.
#
# The contained completion routines provide support for completing:
#
@@ -11,6 +12,7 @@
# *) .git/remotes file names
# *) git 'subcommands'
# *) tree paths within 'ref:path/to/file' expressions
+# *) common --long-options
#
# To use these routines:
#
@@ -31,6 +33,17 @@
# are currently in a git repository. The %s token will be
# 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 ()
{
@@ -262,6 +275,7 @@ __git_commands ()
applypatch) : ask gittus;;
archimport) : import;;
cat-file) : plumbing;;
+ check-attr) : plumbing;;
check-ref-format) : plumbing;;
commit-tree) : plumbing;;
convert-objects) : plumbing;;
@@ -269,10 +283,15 @@ __git_commands ()
cvsimport) : import;;
cvsserver) : daemon;;
daemon) : daemon;;
+ diff-files) : plumbing;;
+ diff-index) : plumbing;;
+ diff-tree) : plumbing;;
fast-import) : import;;
fsck-objects) : plumbing;;
+ fetch--tool) : plumbing;;
fetch-pack) : plumbing;;
fmt-merge-msg) : plumbing;;
+ for-each-ref) : plumbing;;
hash-object) : plumbing;;
http-*) : transport;;
index-pack) : plumbing;;
@@ -573,13 +592,13 @@ _git_log ()
__gitcomp "
--max-count= --max-age= --since= --after=
--min-age= --before= --until=
- --root --not --topo-order --date-order
+ --root --topo-order --date-order --reverse
--no-merges
--abbrev-commit --abbrev=
--relative-date
--author= --committer= --grep=
--all-match
- --pretty= --name-status --name-only
+ --pretty= --name-status --name-only --raw
--not --all
"
return
@@ -745,9 +764,11 @@ _git_config ()
case "$cur" in
--*)
__gitcomp "
- --global --list --replace-all
+ --global --system
+ --list --replace-all
--get --get-all --get-regexp
--add --unset --unset-all
+ --remove-section --rename-section
"
return
;;
@@ -766,7 +787,10 @@ _git_config ()
remote.*.*)
local pfx="${cur%.*}."
cur="${cur##*.}"
- __gitcomp "url fetch push" "$pfx" "$cur"
+ __gitcomp "
+ url fetch push skipDefaultUpdate
+ receivepack uploadpack tagopt
+ " "$pfx" "$cur"
return
;;
remote.*)
@@ -816,6 +840,9 @@ _git_config ()
format.headers
gitcvs.enabled
gitcvs.logfile
+ gitcvs.allbinary
+ gitcvs.dbname gitcvs.dbdriver gitcvs.dbuser gitcvs.dvpass
+ gc.packrefs
gc.reflogexpire
gc.reflogexpireunreachable
gc.rerereresolved
@@ -832,9 +859,11 @@ _git_config ()
i18n.commitEncoding
i18n.logOutputEncoding
log.showroot
+ merge.tool
merge.summary
merge.verbosity
pack.window
+ pack.depth
pull.octopus
pull.twohead
repack.useDeltaBaseOffset
@@ -858,13 +887,13 @@ _git_remote ()
while [ $c -lt $COMP_CWORD ]; do
i="${COMP_WORDS[c]}"
case "$i" in
- add|show|prune) command="$i"; break ;;
+ add|show|prune|update) command="$i"; break ;;
esac
c=$((++c))
done
if [ $c -eq $COMP_CWORD -a -z "$command" ]; then
- __gitcomp "add show prune"
+ __gitcomp "add show prune update"
return
fi
@@ -872,6 +901,18 @@ _git_remote ()
show|prune)
__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=()
;;
@@ -890,6 +931,26 @@ _git_reset ()
__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 ()
{
local cur="${COMP_WORDS[COMP_CWORD]}"
@@ -947,7 +1008,6 @@ _git ()
commit) _git_commit ;;
config) _git_config ;;
diff) _git_diff ;;
- diff-tree) _git_diff_tree ;;
fetch) _git_fetch ;;
format-patch) _git_format_patch ;;
gc) _git_gc ;;
@@ -962,6 +1022,7 @@ _git ()
rebase) _git_rebase ;;
remote) _git_remote ;;
reset) _git_reset ;;
+ shortlog) _git_shortlog ;;
show) _git_show ;;
show-branch) _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_commit git-commit
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_format_patch git-format-patch
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_remote git-remote
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_log git-show-branch
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_cherry git-cherry.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_log git-log.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_push git-push.exe
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_log git-show-branch.exe
complete -o default -o nospace -F _git_log git-whatchanged.exe
diff --git a/object.c b/object.c
index 37d136335..cfc4969ed 100644
--- a/object.c
+++ b/object.c
@@ -176,6 +176,7 @@ struct object *parse_object(const unsigned char *sha1)
if (buffer) {
struct object *obj;
if (check_sha1_signature(sha1, buffer, size, typename(type)) < 0) {
+ free(buffer);
error("sha1 mismatch %s\n", sha1_to_hex(sha1));
return NULL;
}