Go to file
Junio C Hamano c005e98612 get_sha1(): fix error status regression
In finish_object_disambiguation(), if the candidate hasn't been
checked, there are two cases:

 - It is the first and only object that match the prefix; or
 - It replaced another object that matched the prefix but that
   object did not satisfy ds->fn() callback.

And the former case we set ds->candidate_ok to true without doing
anything else, while for the latter we check the candidate, which
may set ds->candidate_ok to false.

At this point in the code, ds->candidate_ok can be false only if
this last-round check found that the candidate does not pass the
check, because the state after update_candidates() returns cannot
satisfy

    !ds->ambiguous && ds->candidate_exists && ds->candidate_checked

and !ds->canidate_ok at the same time.

Hence, when we execute this "return", we know we have seen more than
one object that match the prefix (and none of them satisfied ds->fn),
meaning that we should say "the short name is ambiguous", not "there
is no object that matches the prefix".

Noticed by Jeff King.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-07-03 11:17:17 -07:00
Documentation Git 1.7.9 2012-01-27 11:31:02 -08:00
block-sha1
builtin Merge branch 'maint' 2012-01-12 23:33:39 -08:00
compat Merge branch 'ef/setenv-putenv' into maint 2011-12-28 11:42:24 -08:00
contrib git-completion: workaround zsh COMPREPLY bug 2012-01-26 14:03:51 -08:00
git-gui Merge branch 'master' of git://repo.or.cz/git-gui 2011-12-13 16:48:24 -08:00
git_remote_helpers
gitk-git Merge git://ozlabs.org/~paulus/gitk 2011-12-16 22:18:42 -08:00
gitweb Merge branch 'jn/maint-gitweb-grep-fix' 2012-01-16 16:45:56 -08:00
mergetools
perl Merge branch 'maint' 2012-01-03 13:48:00 -08:00
po
ppc
t Merge branch 'maint-1.7.7' into maint 2012-01-18 15:48:46 -08:00
templates
vcs-svn Fix a bitwise negation assignment issue spotted by Sun Studio 2011-12-21 10:19:40 -08:00
xdiff
.gitattributes
.gitignore Merge branch 'tr/cache-tree' 2011-12-19 16:05:20 -08:00
.mailmap
COPYING
GIT-VERSION-GEN Git 1.7.9 2012-01-27 11:31:02 -08:00
INSTALL INSTALL: warn about recent Fedora breakage 2012-01-26 21:51:29 -08:00
LGPL-2.1
Makefile Merge branch 'na/strtoimax' into maint 2011-12-28 11:32:33 -08:00
README
RelNotes Prepare for 1.7.8.4 2012-01-10 14:27:14 -08:00
abspath.c
aclocal.m4
advice.c
advice.h
alias.c
alloc.c
archive-tar.c
archive-zip.c
archive.c Merge branch 'jk/maint-upload-archive' 2012-01-12 23:34:17 -08:00
archive.h
argv-array.c
argv-array.h
attr.c Merge branch 'maint-1.7.6' into maint-1.7.7 2012-01-11 19:11:00 -08:00
attr.h
base85.c
bisect.c
bisect.h
blob.c
blob.h
branch.c Merge branch 'jn/maint-sequencer-fixes' into maint 2011-12-28 11:32:39 -08:00
branch.h Merge branch 'jn/branch-move-to-self' 2011-12-13 22:53:08 -08:00
builtin.h Merge branch 'jk/upload-archive-use-start-command' 2011-12-16 22:33:30 -08:00
bulk-checkin.c
bulk-checkin.h
bundle.c Merge branch 'maint' 2012-01-03 13:48:00 -08:00
bundle.h
cache-tree.c
cache-tree.h
cache.h sha1_name.c: get rid of get_sha1_with_mode() 2012-07-03 10:24:11 -07:00
check-builtins.sh
check-racy.c
check_bindir
color.c
color.h
combine-diff.c pass struct commit to diff_tree_combined_merge() 2011-12-17 18:22:29 -08:00
command-list.txt
commit.c Merge branch 'jc/show-sig' 2012-01-06 12:44:07 -08:00
commit.h Merge branch 'jc/show-sig' 2012-01-06 12:44:07 -08:00
config.c Merge branch 'na/strtoimax' into maint 2011-12-28 11:32:33 -08:00
config.mak.in
configure.ac
connect.c Merge branch 'jk/fetch-no-tail-match-refs' into maint 2011-12-28 11:32:36 -08:00
connected.c
connected.h
convert.c Merge branch 'jc/maint-lf-to-crlf-keep-crlf' into maint 2011-12-28 11:42:27 -08:00
convert.h
copy.c
credential-cache--daemon.c credentials: add "cache" helper 2011-12-11 23:16:25 -08:00
credential-cache.c credential-cache: ignore "connection refused" errors 2012-01-16 22:15:19 -08:00
credential-store.c credentials: add "store" helper 2011-12-12 16:09:38 -08:00
credential.c credential: use git_prompt instead of git_getpass 2011-12-12 16:09:39 -08:00
credential.h credential: make relevance of http path configurable 2011-12-11 23:16:25 -08:00
csum-file.c
csum-file.h
ctype.c
daemon.c
date.c
decorate.c
decorate.h
delta.h
diff-delta.c
diff-lib.c diff-index: enable recursive pathspec matching in unpack_trees 2012-01-18 15:44:02 -08:00
diff-no-index.c
diff.c Merge branch 'tr/maint-word-diff-incomplete-line' 2012-01-18 15:16:19 -08:00
diff.h pass struct commit to diff_tree_combined_merge() 2011-12-17 18:22:29 -08:00
diffcore-break.c
diffcore-delta.c
diffcore-order.c
diffcore-pickaxe.c
diffcore-rename.c
diffcore.h
dir.c
dir.h
editor.c
entry.c
environment.c Merge branch 'jc/stream-to-pack' 2011-12-16 22:33:40 -08:00
exec_cmd.c
exec_cmd.h
fast-import.c Appease Sun Studio by renaming "tmpfile" 2011-12-21 10:21:04 -08:00
fetch-pack.h
fixup-builtins
fmt-merge-msg.h
fsck.c
fsck.h
generate-cmdlist.sh
gettext.c
gettext.h
git-add--interactive.perl
git-am.sh
git-archimport.perl
git-bisect.sh
git-compat-util.h Merge branch 'na/strtoimax' into maint 2011-12-28 11:32:33 -08:00
git-cvsexportcommit.perl git-cvsexportcommit: Fix calling Perl's rel2abs() on MSYS 2012-01-11 18:04:08 -08:00
git-cvsimport.perl
git-cvsserver.perl
git-difftool--helper.sh
git-difftool.perl use -h for synopsis and --help for manpage consistently 2011-10-05 10:47:10 -07:00
git-filter-branch.sh
git-instaweb.sh
git-lost-found.sh
git-merge-octopus.sh
git-merge-one-file.sh
git-merge-resolve.sh
git-mergetool--lib.sh
git-mergetool.sh
git-parse-remote.sh
git-pull.sh Merge branch 'ab/pull-rebase-config' 2011-12-09 13:37:01 -08:00
git-quiltimport.sh
git-rebase--am.sh
git-rebase--interactive.sh Merge branch 'aw/rebase-i-stop-on-failure-to-amend' into maint 2011-12-28 11:32:34 -08:00
git-rebase--merge.sh
git-rebase.sh
git-relink.perl
git-remote-testgit.py
git-repack.sh
git-request-pull.sh request-pull: use the real fork point when preparing the message 2012-01-10 21:51:15 -08:00
git-send-email.perl send-email: multiedit is a boolean config option 2012-01-09 15:15:28 -08:00
git-sh-i18n.sh
git-sh-setup.sh
git-stash.sh stash: Don't fail if work dir contains file named 'HEAD' 2012-01-01 01:11:56 -08:00
git-submodule.sh Merge branch 'tc/submodule-clone-name-detection' 2011-10-26 16:16:32 -07:00
git-svn.perl
git-web--browse.sh
git.c Merge branch 'ab/enable-i18n' 2011-12-19 16:06:41 -08:00
git.spec.in
gpg-interface.c verify_signed_buffer: fix stale comment 2012-01-05 13:02:26 -08:00
gpg-interface.h
graph.c
graph.h
grep.c grep: enable threading with -p and -W using lazy attribute lookup 2011-12-16 15:47:10 -08:00
grep.h grep: enable threading with -p and -W using lazy attribute lookup 2011-12-16 15:47:10 -08:00
hash.c
hash.h
help.c
help.h
hex.c
http-backend.c
http-fetch.c Merge branch 'ab/enable-i18n' 2011-12-19 16:06:41 -08:00
http-push.c Merge branch 'ab/enable-i18n' 2011-12-19 16:06:41 -08:00
http-walker.c
http.c Merge branch 'jk/maint-push-over-dav' into maint 2011-12-28 11:32:37 -08:00
http.h Merge branch 'jk/maint-push-over-dav' into maint 2011-12-28 11:32:37 -08:00
ident.c
imap-send.c Merge branch 'jk/git-prompt' 2011-12-22 11:27:23 -08:00
kwset.c
kwset.h
levenshtein.c
levenshtein.h
list-objects.c
list-objects.h
ll-merge.c
ll-merge.h
lockfile.c
log-tree.c Merge branch 'jc/show-sig' 2012-01-06 12:44:07 -08:00
log-tree.h
mailmap.c Merge branch 'ml/mailmap' into maint-1.7.6 2011-12-13 21:12:14 -08:00
mailmap.h
match-trees.c
merge-file.c
merge-file.h
merge-recursive.c Merge branch 'tr/cache-tree' 2011-12-19 16:05:20 -08:00
merge-recursive.h
name-hash.c
notes-cache.c Merge branch 'jc/show-sig' 2012-01-06 12:44:07 -08:00
notes-cache.h
notes-merge.c Merge branch 'jc/show-sig' 2012-01-06 12:44:07 -08:00
notes-merge.h Convert commit_tree() to take strbuf as message 2011-12-15 10:46:42 -08:00
notes.c
notes.h
object.c
object.h
pack-check.c
pack-refs.c
pack-refs.h
pack-revindex.c
pack-revindex.h
pack-write.c Appease Sun Studio by renaming "tmpfile" 2011-12-21 10:21:04 -08:00
pack.h Merge branch 'jc/stream-to-pack' 2011-12-16 22:33:40 -08:00
pager.c
parse-options-cb.c
parse-options.c
parse-options.h
patch-delta.c
patch-ids.c
patch-ids.h
path.c
pkt-line.c
pkt-line.h
preload-index.c
pretty.c Merge branch 'jc/show-sig' 2012-01-06 12:44:07 -08:00
progress.c
progress.h
prompt.c prompt: use git_terminal_prompt 2011-12-12 16:09:38 -08:00
prompt.h prompt: use git_terminal_prompt 2011-12-12 16:09:38 -08:00
quote.c
quote.h
reachable.c
reachable.h
read-cache.c Merge branch 'rs/allocate-cache-entry-individually' 2011-12-09 13:36:56 -08:00
reflog-walk.c Merge branch 'jk/pretty-reglog-ent' 2011-12-22 11:27:28 -08:00
reflog-walk.h pretty: give placeholders to reflog identity 2011-12-16 13:00:15 -08:00
refs.c Merge branch 'mh/ref-api' 2011-12-20 13:25:53 -08:00
refs.h resolve_gitlink_ref(): improve docstring 2011-12-12 09:08:53 -08:00
remote-curl.c Merge branch 'jk/http-push-to-empty' into maint 2011-12-28 11:42:37 -08:00
remote.c Rename resolve_ref() to resolve_ref_unsafe() 2011-12-13 09:39:46 -08:00
remote.h
replace_object.c
rerere.c
rerere.h
resolve-undo.c
resolve-undo.h
revision.c sha1_name.c: get rid of get_sha1_with_mode() 2012-07-03 10:24:11 -07:00
revision.h
run-command.c
run-command.h
send-pack.h
sequencer.c revert: stop creating and removing sequencer-old directory 2011-12-12 13:33:53 -08:00
sequencer.h revert: stop creating and removing sequencer-old directory 2011-12-12 13:33:53 -08:00
server-info.c
setup.c sha1_name.c: get rid of get_sha1_with_mode_1() 2012-07-03 10:22:37 -07:00
sh-i18n--envsubst.c
sha1-array.c
sha1-array.h
sha1-lookup.c
sha1-lookup.h
sha1_file.c Appease Sun Studio by renaming "tmpfile" 2011-12-21 10:21:04 -08:00
sha1_name.c get_sha1(): fix error status regression 2012-07-03 11:17:17 -07:00
shallow.c
shell.c
shortlog.h
show-index.c
sideband.c
sideband.h
sigchain.c
sigchain.h
strbuf.c Merge branch 'jk/credentials' 2011-12-19 16:05:16 -08:00
strbuf.h Merge branch 'jk/credentials' 2011-12-19 16:05:16 -08:00
streaming.c
streaming.h
string-list.c
string-list.h string-list: Add API to remove an item from an unsorted list 2011-08-14 14:19:35 -07:00
submodule.c Merge branch 'jl/submodule-status-failure-report' into maint 2011-12-21 11:42:45 -08:00
submodule.h
symlinks.c
tag.c
tag.h
tar.h
test-chmtime.c
test-credential.c introduce credentials API 2011-12-11 23:16:24 -08:00
test-ctype.c
test-date.c
test-delta.c
test-dump-cache-tree.c
test-genrandom.c
test-index-version.c
test-line-buffer.c
test-match-trees.c
test-mktemp.c
test-obj-pool.c
test-parse-options.c
test-path-utils.c
test-run-command.c
test-scrap-cache-tree.c
test-sha1.c
test-sha1.sh
test-sigchain.c
test-string-pool.c
test-subprocess.c
test-svn-fe.c
test-treap.c Fix a bitwise negation assignment issue spotted by Sun Studio 2011-12-21 10:19:40 -08:00
thread-utils.c
thread-utils.h
trace.c
transport-helper.c
transport.c Merge branch 'maint' 2012-01-04 11:21:42 -08:00
transport.h
tree-diff.c use custom rename score during --follow 2011-12-16 12:33:49 -08:00
tree-walk.c Document limited recursion pathspec matching with wildcards 2012-01-14 18:39:04 -08:00
tree-walk.h
tree.c
tree.h
unimplemented.sh
unix-socket.c unix-socket: do not let close() or chdir() clobber errno during cleanup 2012-01-11 17:37:10 -08:00
unix-socket.h credentials: add "cache" helper 2011-12-11 23:16:25 -08:00
unpack-trees.c
unpack-trees.h
upload-pack.c
url.c
url.h
usage.c
userdiff.c Merge branch 'tr/userdiff-c-returns-pointer' into maint 2011-12-21 11:42:45 -08:00
userdiff.h
utf8.c
utf8.h
walker.c
walker.h
wrap-for-bin.sh
wrapper.c
write_or_die.c
ws.c
wt-status.c Convert resolve_ref+xstrdup to new resolve_refdup function 2011-12-13 09:26:52 -08:00
wt-status.h
xdiff-interface.c
xdiff-interface.h
zlib.c

README

////////////////////////////////////////////////////////////////

	GIT - the stupid content tracker

////////////////////////////////////////////////////////////////

"git" can mean anything, depending on your mood.

 - random three-letter combination that is pronounceable, and not
   actually used by any common UNIX command.  The fact that it is a
   mispronunciation of "get" may or may not be relevant.
 - stupid. contemptible and despicable. simple. Take your pick from the
   dictionary of slang.
 - "global information tracker": you're in a good mood, and it actually
   works for you. Angels sing, and a light suddenly fills the room.
 - "goddamn idiotic truckload of sh*t": when it breaks

Git is a fast, scalable, distributed revision control system with an
unusually rich command set that provides both high-level operations
and full access to internals.

Git is an Open Source project covered by the GNU General Public License.
It was originally written by Linus Torvalds with help of a group of
hackers around the net. It is currently maintained by Junio C Hamano.

Please read the file INSTALL for installation instructions.

See Documentation/gittutorial.txt to get started, then see
Documentation/everyday.txt for a useful minimum set of commands, and
Documentation/git-commandname.txt for documentation of each command.
If git has been correctly installed, then the tutorial can also be
read with "man gittutorial" or "git help tutorial", and the
documentation of each command with "man git-commandname" or "git help
commandname".

CVS users may also want to read Documentation/gitcvs-migration.txt
("man gitcvs-migration" or "git help cvs-migration" if git is
installed).

Many Git online resources are accessible from http://git-scm.com/
including full documentation and Git related tools.

The user discussion and development of Git take place on the Git
mailing list -- everyone is welcome to post bug reports, feature
requests, comments and patches to git@vger.kernel.org. To subscribe
to the list, send an email with just "subscribe git" in the body to
majordomo@vger.kernel.org. The mailing list archives are available at
http://marc.theaimsgroup.com/?l=git and other archival sites.

The messages titled "A note from the maintainer", "What's in
git.git (stable)" and "What's cooking in git.git (topics)" and
the discussion following them on the mailing list give a good
reference for project status, development direction and
remaining tasks.