Go to file
Pang Yan Han 160b81ed81 receive-pack: don't pass non-existent refs to post-{receive,update} hooks
When a push specifies deletion of non-existent refs, the post post-receive and
post-update hooks receive them as input/arguments.

For instance, for the following push, where refs/heads/nonexistent is a ref
which does not exist on the remote side:

	git push origin :refs/heads/nonexistent

the post-receive hook receives from standard input:

	<null-sha1> SP <null-sha1> SP refs/heads/nonexistent

and the post-update hook receives as arguments:

	refs/heads/nonexistent

which does not make sense since it is a no-op.

Teach receive-pack not to pass non-existent refs to the post-receive and
post-update hooks. If the push only attempts to delete non-existent refs,
these hooks are not even called.

The update and pre-receive hooks are still notified about attempted
deletion of non-existent refs to give them a chance to inspect the
situation and act on it.

[jc: mild fix-ups to avoid introducing an extra list; also added fixes to
some tests]

Signed-off-by: Pang Yan Han <pangyanhan@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-09-30 12:18:46 -07:00
Documentation Git 1.7.7-rc3 2011-09-23 15:35:57 -07:00
block-sha1
builtin receive-pack: don't pass non-existent refs to post-{receive,update} hooks 2011-09-30 12:18:46 -07:00
compat obstack: Fix portability issues 2011-08-28 22:03:26 -07:00
contrib Merge branch 'va/p4-branch-import' 2011-08-28 21:15:34 -07:00
git-gui
git_remote_helpers
gitk-git
gitweb Merge branch 'jn/mime-type-with-params' into maint 2011-08-16 11:41:26 -07:00
mergetools mergetools/meld: Use '--output' when available 2011-08-19 10:52:16 -07:00
perl
po
ppc
t receive-pack: don't pass non-existent refs to post-{receive,update} hooks 2011-09-30 12:18:46 -07:00
templates
vcs-svn
xdiff Merge branch 'rc/histogram-diff' 2011-09-06 11:42:58 -07:00
.gitattributes
.gitignore
.mailmap
COPYING
GIT-VERSION-GEN Git 1.7.7-rc3 2011-09-23 15:35:57 -07:00
INSTALL
LGPL-2.1
Makefile Merge branch 'fk/use-kwset-pickaxe-grep-f' 2011-09-02 10:00:38 -07:00
README
RelNotes Git 1.7.6.4 2011-09-23 14:43:05 -07:00
abspath.c Merge branch 'js/maint-add-path-stat-pwd' into maint 2011-08-16 11:41:27 -07:00
aclocal.m4
advice.c
advice.h
alias.c
alloc.c
archive-tar.c
archive-zip.c
archive.c Rename git_checkattr() to git_check_attr() 2011-08-04 15:53:21 -07:00
archive.h
attr.c Merge branch 'mh/attr' 2011-08-28 21:19:12 -07:00
attr.h Rename git_checkattr() to git_check_attr() 2011-08-04 15:53:21 -07:00
base85.c
bisect.c bisect: introduce support for --no-checkout option. 2011-08-04 15:34:32 -07:00
bisect.h bisect: introduce support for --no-checkout option. 2011-08-04 15:34:32 -07:00
blob.c
blob.h
branch.c Merge branch 'ci/forbid-unwanted-current-branch-update' 2011-09-16 21:48:10 -07:00
branch.h branch --set-upstream: regression fix 2011-09-16 21:47:47 -07:00
builtin.h
bundle.c
bundle.h
cache-tree.c
cache-tree.h
cache.h Merge branch 'cb/maint-ls-files-error-report' into maint 2011-09-23 14:30:49 -07:00
check-builtins.sh
check-racy.c
check_bindir
color.c want_color: automatically fallback to color.ui 2011-08-19 15:51:38 -07:00
color.h want_color: automatically fallback to color.ui 2011-08-19 15:51:38 -07:00
combine-diff.c Merge branch 'jk/color-and-pager' 2011-08-28 21:19:16 -07:00
command-list.txt
commit.c Merge branch 'nd/decorate-grafts' 2011-08-28 21:22:58 -07:00
commit.h Move write_shallow_commits to fetch-pack.c 2011-08-18 11:01:18 -07:00
config.c Merge branch 'jk/maint-config-param' into maint 2011-09-11 21:53:13 -07:00
config.mak.in
configure.ac
connect.c Merge branch 'dz/connect-error-report' into maint 2011-09-11 21:53:47 -07:00
convert.c Merge branch 'tr/maint-ident-to-git-memmove' 2011-09-02 13:18:25 -07:00
convert.h
copy.c
csum-file.c
csum-file.h
ctype.c
daemon.c
date.c
decorate.c
decorate.h
delta.h
diff-delta.c
diff-lib.c Merge branch 'jc/maint-reset-unmerged-path' into maint 2011-08-16 11:41:28 -07:00
diff-no-index.c
diff.c Merge branch 'jk/color-and-pager' 2011-08-28 21:19:16 -07:00
diff.h Merge branch 'jk/color-and-pager' 2011-08-28 21:19:16 -07:00
diffcore-break.c
diffcore-delta.c
diffcore-order.c
diffcore-pickaxe.c Use kwset in pickaxe 2011-08-20 22:33:57 -07:00
diffcore-rename.c
diffcore.h combine-diff: support format_callback 2011-08-20 23:03:06 -07:00
dir.c
dir.h
editor.c
entry.c
environment.c Merge branch 'nd/maint-clone-gitdir' 2011-08-28 21:20:28 -07:00
exec_cmd.c
exec_cmd.h
fast-import.c Merge branch 'di/fast-import-tagging' 2011-08-28 21:18:48 -07:00
fetch-pack.h
fixup-builtins
fsck.c fsck: improve committer/author check 2011-08-11 12:21:07 -07:00
fsck.h
generate-cmdlist.sh misc-sh: fix up whitespace in some other .sh files. 2011-08-05 15:04:48 -07:00
gettext.c
gettext.h
git-add--interactive.perl
git-am.sh Merge branch 'gb/maint-am-patch-format-error-message' into maint 2011-09-23 14:11:18 -07:00
git-archimport.perl
git-bisect.sh bisect: take advantage of gettextln, eval_gettextln. 2011-08-30 16:19:57 -07:00
git-compat-util.h Merge branch 'cb/maint-exec-error-report' 2011-08-17 17:25:55 -07:00
git-cvsexportcommit.perl
git-cvsimport.perl
git-cvsserver.perl
git-difftool--helper.sh difftool--helper: Make style consistent with git 2011-08-19 00:09:17 -07:00
git-difftool.perl
git-filter-branch.sh Merge branch 'js/sh-style' 2011-08-17 17:35:50 -07:00
git-instaweb.sh
git-lost-found.sh
git-merge-octopus.sh
git-merge-one-file.sh
git-merge-resolve.sh
git-mergetool--lib.sh Merge branch 'maint' 2011-09-19 20:46:48 -07:00
git-mergetool.sh git-mergetool: check return value from read 2011-09-19 17:41:49 -07:00
git-parse-remote.sh
git-pull.sh Merge branch 'js/i18n-scripts' 2011-08-25 16:00:16 -07:00
git-quiltimport.sh
git-rebase--am.sh
git-rebase--interactive.sh
git-rebase--merge.sh
git-rebase.sh misc-sh: fix up whitespace in some other .sh files. 2011-08-05 15:04:48 -07:00
git-relink.perl
git-remote-testgit.py (short) documentation for the testgit remote helper 2011-09-01 15:52:02 -07:00
git-repack.sh
git-request-pull.sh
git-send-email.perl
git-sh-i18n.sh gettext: add gettextln, eval_gettextln to encode common idiom 2011-08-08 12:02:16 -07:00
git-sh-setup.sh
git-stash.sh stash: take advantage of eval_gettextln 2011-08-08 12:05:22 -07:00
git-submodule.sh Merge branch 'js/i18n-scripts' 2011-08-25 16:00:16 -07:00
git-svn.perl git-svn: teach git-svn to populate svn:mergeinfo 2011-09-13 08:12:13 +00:00
git-web--browse.sh
git.c Merge branch 'jk/pager-with-external-command' 2011-08-28 21:19:25 -07:00
git.spec.in
graph.c color: delay auto-color decision until point of use 2011-08-19 15:51:34 -07:00
graph.h
grep.c Merge branch 'fk/use-kwset-pickaxe-grep-f' 2011-09-02 10:00:38 -07:00
grep.h Use kwset in grep 2011-08-20 22:33:58 -07:00
hash.c
hash.h
help.c
help.h
hex.c
http-backend.c
http-fetch.c Mark http-fetch without -a as deprecated 2011-08-23 21:36:20 -07:00
http-push.c whitespace: have SP on both sides of an assignment "=" 2011-08-25 14:47:07 -07:00
http-walker.c
http.c Merge branch 'rc/maint-http-wrong-free' 2011-08-11 11:03:13 -07:00
http.h Merge branch 'jc/zlib-wrap' into maint 2011-08-16 11:23:26 -07:00
ident.c
imap-send.c
kwset.c obstack: Fix portability issues 2011-08-28 22:03:26 -07:00
kwset.h Adapt the kwset code to Git 2011-08-20 22:33:57 -07:00
levenshtein.c
levenshtein.h
list-objects.c
list-objects.h
ll-merge.c Rename git_checkattr() to git_check_attr() 2011-08-04 15:53:21 -07:00
ll-merge.h
lockfile.c
log-tree.c Merge branch 'nd/decorate-grafts' 2011-08-28 21:22:58 -07:00
log-tree.h
mailmap.c
mailmap.h
match-trees.c
merge-file.c
merge-file.h
merge-recursive.c merge-recursive: Do not look at working tree during a virtual ancestor merge 2011-09-23 15:21:01 -07:00
merge-recursive.h merge-recursive: Save D/F conflict filenames instead of unlinking them 2011-08-14 14:19:35 -07:00
name-hash.c
notes-cache.c
notes-cache.h
notes-merge.c
notes-merge.h
notes.c Do not use C++-style comments 2011-08-22 10:07:07 -07:00
notes.h
object.c
object.h
pack-check.c
pack-refs.c
pack-refs.h
pack-revindex.c
pack-revindex.h
pack-write.c
pack.h
pager.c setup_pager: set GIT_PAGER_IN_USE 2011-08-18 14:17:12 -07:00
parse-options-cb.c Merge branch 'jk/color-and-pager' 2011-08-28 21:19:16 -07:00
parse-options.c git_config_colorbool: refactor stdout_is_tty handling 2011-08-18 14:48:29 -07:00
parse-options.h parse-options: export opterr, optbug 2011-08-11 12:18:02 -07:00
patch-delta.c
patch-ids.c
patch-ids.h
path.c read_gitfile_gently(): rename misnamed function to read_gitfile() 2011-08-22 14:04:56 -07:00
pkt-line.c
pkt-line.h
preload-index.c
pretty.c
progress.c
progress.h
quote.c ls-files: fix pathspec display on error 2011-08-11 13:04:16 -07:00
quote.h
reachable.c
reachable.h
read-cache.c Merge branch 'maint' 2011-08-25 16:00:07 -07:00
reflog-walk.c
reflog-walk.h
refs.c receive-pack: don't pass non-existent refs to post-{receive,update} hooks 2011-09-30 12:18:46 -07:00
refs.h receive-pack: don't pass non-existent refs to post-{receive,update} hooks 2011-09-30 12:18:46 -07:00
remote-curl.c Sync with 1.7.6.2 2011-09-06 11:42:12 -07:00
remote.c
remote.h
replace_object.c
rerere.c
rerere.h
resolve-undo.c
resolve-undo.h
revision.c
revision.h
run-command.c notice error exit from pager 2011-08-01 16:21:55 -07:00
run-command.h
send-pack.h
server-info.c
setup.c Merge branch 'nd/maint-clone-gitdir' 2011-08-28 21:20:28 -07:00
sh-i18n--envsubst.c
sha1-array.c
sha1-array.h
sha1-lookup.c
sha1-lookup.h
sha1_file.c Merge branch 'jc/maint-clone-alternates' into maint 2011-09-23 14:27:33 -07:00
sha1_name.c
shallow.c
shell.c
shortlog.h
show-index.c
sideband.c
sideband.h
sigchain.c
sigchain.h
strbuf.c Merge branch 'jk/maint-config-param' into maint 2011-09-11 21:53:13 -07:00
strbuf.h Merge branch 'jk/maint-config-param' into maint 2011-09-11 21:53:13 -07:00
streaming.c Merge branch 'jc/streaming-filter' 2011-08-01 15:00:29 -07:00
streaming.h
string-list.c string-list: Add API to remove an item from an unsorted list 2011-08-14 14:19:35 -07:00
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 'nd/maint-clone-gitdir' into maint 2011-09-23 14:21:39 -07:00
submodule.h push: Don't push a repository with unpushed submodules 2011-08-20 23:03:52 -07:00
symlinks.c
tag.c
tag.h
tar.h
test-chmtime.c
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-path-utils: Add subcommand "prefix_path" 2011-08-04 15:57:18 -07:00
test-run-command.c
test-sha1.c
test-sha1.sh
test-sigchain.c
test-string-pool.c
test-subprocess.c
test-svn-fe.c
test-treap.c
thread-utils.c
thread-utils.h
trace.c
transport-helper.c
transport.c Sync with 1.7.6.2 2011-09-06 11:42:12 -07:00
transport.h push: Don't push a repository with unpushed submodules 2011-08-20 23:03:52 -07:00
tree-diff.c
tree-walk.c
tree-walk.h
tree.c
tree.h
unimplemented.sh
unpack-trees.c Merge branch 'jc/diff-index-quick-exit-early' into maint 2011-08-16 11:23:25 -07:00
unpack-trees.h Merge branch 'jc/diff-index-quick-exit-early' into maint 2011-08-16 11:23:25 -07:00
upload-pack.c Sync with 1.7.6.1 2011-08-24 12:18:02 -07:00
url.c
url.h
usage.c
userdiff.c Merge branch 'jk/combine-diff-binary-etc' into maint 2011-08-16 11:23:24 -07:00
userdiff.h
utf8.c
utf8.h
walker.c
walker.h
wrap-for-bin.sh
wrapper.c
write_or_die.c
ws.c Rename git_checkattr() to git_check_attr() 2011-08-04 15:53:21 -07:00
wt-status.c Merge branch 'jk/maint-1.7.2-status-ignored' into maint 2011-09-11 21:51:10 -07: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.