Git with broken hash generation to generate collisions between object IDs. Don't use this! https://undefinedbehavior.de/posts/commit-vandalism/
Go to file
Shawn O. Pearce c715f78369 Don't find objects in packs which aren't available anymore.
Matthias Lederhofer identified a race condition where a Git reader
process was able to locate an object in a packed_git index, but
was then preempted while a `git repack -a -d` ran and completed.
By the time the reader was able to seek in the packfile to get the
object data, the packfile no longer existed on disk.

In this particular case the reader process did not attempt to
open the packfile before it was deleted, so it did not already
have the pack_fd field popuplated.  With the packfile itself gone,
there was no way for the reader to open it and fetch the data.

I'm fixing the race condition by teaching find_pack_entry to ignore
a packed_git whose packfile is not currently open and which cannot
be opened.  If none of the currently known packs can supply the
object, we will return 0 and the caller will decide the object is
not available.  If this is the first attempt at finding an object,
the caller will reprepare_packed_git and try again.  If it was
the second attempt, the caller will typically return NULL back,
and an error message about a missing object will be reported.

This patch does not address the situation of a reader which is
being starved out by a tight sequence of `git repack -a -d` runs.
In this particular case the reader will try twice, probably fail
both times, and declare the object in question cannot be found.
As it is highly unlikely that a real world `git repack -a -d` can
complete faster than a reader can open a packfile, so I don't think
this is a huge concern.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-02-01 22:27:47 -08:00
arm [PATCH] ARM optimized SHA1 implementation 2005-09-20 18:10:00 -07:00
compat Replacing the system call pread() with lseek()/xread()/lseek() sequence. 2007-01-09 16:40:40 -08:00
contrib blameview: Use git-cat-file to read the file content. 2007-01-30 02:32:28 -08:00
Documentation Teach 'git remote' how to cleanup stale tracking branches. 2007-02-01 22:06:36 -08:00
gitweb [PATCH] Rename git-repo-config to git-config. 2007-01-28 16:16:53 -08:00
mozilla-sha1 Fix constness of input in mozilla-sha1/sha1.c::SHA1_Update(). 2005-11-01 14:05:12 -08:00
perl [PATCH] Rename git-repo-config to git-config. 2007-01-28 16:16:53 -08:00
ppc Fix more typos, primarily in the code 2006-07-10 00:36:44 -07:00
t t9200: do not test -x bit if the filesystem does not support it. 2007-01-31 14:25:52 -08:00
templates Heavily expanded update hook to send more useful emails than the old hook 2007-01-28 14:38:11 -08:00
xdiff Fix yet another subtle xdl_merge() bug 2006-12-30 18:05:05 -08:00
.gitignore git-fsck-objects is now synonym to git-fsck 2007-01-28 16:33:58 -08:00
.mailmap .mailmap: fix screw-ups in Uwe's name 2007-01-22 16:25:15 -08:00
alloc.c Add NO_C99_FORMAT to support older compilers. 2006-08-02 00:27:18 -07:00
archive-tar.c Set default "tar" umask to 002 and owner.group to root.root 2007-01-06 10:37:14 -08:00
archive-zip.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
archive.h Remove unsupported C99 style struct initializers in git-archive. 2006-11-04 23:48:36 -08:00
base85.c improve base85 generated assembly code 2006-05-08 11:05:01 -07:00
blob.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
blob.h [PATCH] Anal retentive 'const unsigned char *sha1' 2005-06-08 13:04:53 -07:00
builtin-add.c Make a short-and-sweet "git-add -i" synonym for "git-add --interactive" 2007-01-17 10:52:36 -08:00
builtin-annotate.c git-annotate: no need to exec blame; it is built-in now. 2006-11-10 13:36:44 -08:00
builtin-apply.c apply --cached: fix crash in subdirectory 2007-01-20 19:05:20 -08:00
builtin-archive.c Make sure git_connect() always give two file descriptors. 2007-01-21 21:51:01 -08:00
builtin-blame.c git-blame: somewhat better commenting. 2007-01-29 19:41:21 -08:00
builtin-branch.c Don't force everybody to call setup_ident(). 2007-01-28 01:58:50 -08:00
builtin-cat-file.c Relative timestamps in git log 2006-08-26 19:12:03 -07:00
builtin-check-ref-format.c Further clean-up: usage() vs die() 2006-08-03 21:55:41 -07:00
builtin-checkout-index.c Use PATH_MAX instead of MAXPATHLEN 2006-08-26 17:52:58 -07:00
builtin-commit-tree.c Don't force everybody to call setup_ident(). 2007-01-28 01:58:50 -08:00
builtin-config.c [PATCH] Rename git-repo-config to git-config. 2007-01-28 16:16:53 -08:00
builtin-count-objects.c count-objects -v: show number of packs as well. 2006-12-27 01:05:00 -08:00
builtin-describe.c Compute accurate distances in git-describe before output. 2007-01-28 02:08:51 -08:00
builtin-diff-files.c Merge branch 'th/diff-extra' 2006-08-12 19:34:41 -07:00
builtin-diff-index.c Call setup_git_directory() much earlier 2006-07-29 01:34:07 -07:00
builtin-diff-stages.c Do not use memcmp(sha1_1, sha1_2, 20) with hardcoded length. 2006-08-17 14:23:53 -07:00
builtin-diff-tree.c Call setup_git_directory() much earlier 2006-07-29 01:34:07 -07:00
builtin-diff.c Revert "git-diff: Introduce --index and deprecate --cached." 2006-12-13 02:03:11 -08:00
builtin-fmt-merge-msg.c "git fmt-merge-msg" SIGSEGV 2006-11-16 23:45:57 -08:00
builtin-for-each-ref.c Teach for-each-ref about a little language called Tcl. 2007-01-28 13:00:26 -08:00
builtin-fsck.c Make fsck and fsck-objects be builtins. 2007-01-29 09:36:21 -08:00
builtin-grep.c short i/o: fix calls to read to use xread or read_in_full 2007-01-08 15:44:47 -08:00
builtin-init-db.c Allow default core.logallrefupdates to be overridden with template's config 2007-01-24 17:33:25 -08:00
builtin-log.c Don't force everybody to call setup_ident(). 2007-01-28 01:58:50 -08:00
builtin-ls-files.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
builtin-ls-tree.c remove unnecessary initializations 2006-08-15 21:22:20 -07:00
builtin-mailinfo.c -u is now default for 'git-mailinfo'. 2007-01-09 21:32:49 -08:00
builtin-mailsplit.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
builtin-merge-file.c move read_mmfile() into xdiff-interface 2006-12-21 23:10:14 -08:00
builtin-mv.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
builtin-name-rev.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
builtin-pack-objects.c Use fixed-size integers for .idx file I/O 2007-01-18 14:11:50 -08:00
builtin-pack-refs.c Fix seriously broken "git pack-refs" 2007-01-25 19:16:07 -08:00
builtin-prune-packed.c prune-packed: add -q to usage 2007-01-18 14:30:05 -08:00
builtin-prune.c Revert "prune: --grace=time" 2007-01-21 21:29:57 -08:00
builtin-push.c rename --exec to --receive-pack for push and send-pack 2007-01-19 17:54:33 -08:00
builtin-read-tree.c read-tree: document --exclude-per-directory 2006-12-05 23:44:23 -08:00
builtin-reflog.c reflog gc: a tag that does not point at a commit is not a crime. 2007-01-22 21:39:03 -08:00
builtin-rerere.c short i/o: fix calls to write to use xwrite or write_in_full 2007-01-08 15:44:47 -08:00
builtin-rev-list.c Teach all of log family --left-right output. 2006-12-17 10:35:28 -08:00
builtin-rev-parse.c Tell between packed, unpacked and symbolic refs. 2006-09-20 22:02:01 -07:00
builtin-rm.c git-rm documentation: remove broken behaviour from the example. 2007-01-16 11:50:29 -08:00
builtin-runstatus.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
builtin-shortlog.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
builtin-show-branch.c show-branch -g: default to HEAD 2007-01-25 22:31:10 -08:00
builtin-show-ref.c show-ref: fix --exclude-existing 2006-12-18 13:40:25 -08:00
builtin-stripspace.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
builtin-symbolic-ref.c Fix git-fetch while on detached HEAD not to give needlessly alarming errors 2007-01-15 15:35:07 -08:00
builtin-tar-tree.c short i/o: fix calls to write to use xwrite or write_in_full 2007-01-08 15:44:47 -08:00
builtin-unpack-objects.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
builtin-update-index.c Fix git-update-index to work with relative pathnames. 2007-01-31 13:14:32 -08:00
builtin-update-ref.c lock_any_ref_for_update(): do not accept malformatted refs. 2007-01-29 00:57:07 -08:00
builtin-upload-archive.c short i/o: fix calls to read to use xread or read_in_full 2007-01-08 15:44:47 -08:00
builtin-verify-pack.c Load core configuration in git-verify-pack. 2006-12-29 11:36:45 -08:00
builtin-write-tree.c Convert memcpy(a,b,20) to hashcpy(a,b). 2006-08-23 13:53:10 -07:00
builtin.h Make fsck and fsck-objects be builtins. 2007-01-29 09:36:21 -08:00
cache-tree.c Catch errors when writing an index that contains invalid objects. 2006-11-13 14:26:51 -08:00
cache-tree.h write-tree: --prefix=<path> 2006-05-01 22:29:16 -07:00
cache.h Don't force everybody to call setup_ident(). 2007-01-28 01:58:50 -08:00
check-builtins.sh cherry is built-in, do not ship git-cherry.sh 2006-11-05 11:26:21 -08:00
check-racy.c Add check program "git-check-racy" 2006-08-15 21:38:07 -07:00
color.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
color.h Move color option parsing out of diff.c and into color.[ch] 2006-09-08 16:44:10 -07:00
combine-diff.c Merge branch 'jc/combined' 2006-10-26 02:07:18 -07:00
commit.c Use log output encoding in --pretty=email headers. 2007-01-13 10:10:20 -08:00
commit.h is_repository_shallow(): prototype fix. 2007-01-21 22:22:23 -08:00
config.c config_set_multivar(): disallow newlines in keys 2007-01-19 17:55:14 -08:00
config.mak.in remove merge-recursive-old 2006-11-21 20:55:39 -08:00
configure.ac Remove NO_ACCURATE_DIFF options from build systems 2006-12-22 23:13:28 -08:00
connect.c Make sure git_connect() always give two file descriptors. 2007-01-21 21:51:01 -08:00
convert-objects.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
copy.c copy_fd: close ifd on error 2005-12-27 10:49:25 -08:00
COPYING Add a COPYING notice, making it explicit that the license is GPLv2. 2005-04-11 10:18:16 -07:00
csum-file.c Convert memcpy(a,b,20) to hashcpy(a,b). 2006-08-23 13:53:10 -07:00
csum-file.h [PATCH] -Werror fixes 2005-08-09 22:28:19 -07:00
ctype.c Unlocalized isspace and friends 2005-10-14 17:17:27 -07:00
daemon.c git-push through git protocol 2007-01-28 12:31:56 -08:00
date.c show_date(): fix relative dates 2007-01-20 18:57:47 -08:00
delta.h pack-object: slightly more efficient 2006-05-15 12:32:13 -07:00
diff-delta.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
diff-lib.c diff-index --cached --raw: show tree entry on the LHS for unmerged entries. 2007-01-06 22:57:42 -08:00
diff.c short i/o: fix calls to write to use xwrite or write_in_full 2007-01-08 15:44:47 -08:00
diff.h diff-index --cached --raw: show tree entry on the LHS for unmerged entries. 2007-01-06 22:57:42 -08:00
diffcore-break.c Do not use memcmp(sha1_1, sha1_2, 20) with hardcoded length. 2006-08-17 14:23:53 -07:00
diffcore-delta.c diffcore-delta: 64-byte-or-EOL ultrafast replacement (hash fix). 2006-03-15 13:19:27 -08:00
diffcore-order.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
diffcore-pickaxe.c diffcore-pickaxe: fix infinite loop on zero-length needle 2007-01-25 21:17:19 -08:00
diffcore-rename.c Bypass expensive content comparsion during rename detection. 2006-12-14 02:40:33 -08:00
diffcore.h diff-index --cached --raw: show tree entry on the LHS for unmerged entries. 2007-01-06 22:57:42 -08:00
dir.c short i/o: fix calls to read to use xread or read_in_full 2007-01-08 15:44:47 -08:00
dir.h Fix 'git add' with .gitignore 2006-12-29 11:01:31 -08:00
dump-cache-tree.c Do not use memcmp(sha1_1, sha1_2, 20) with hardcoded length. 2006-08-17 14:23:53 -07:00
entry.c short i/o: fix calls to write to use xwrite or write_in_full 2007-01-08 15:44:47 -08:00
environment.c Introduce is_bare_repository() and core.bare configuration variable 2007-01-07 21:36:35 -08:00
exec_cmd.c Use preprocessor constants for environment variable names. 2006-12-19 01:51:51 -08:00
exec_cmd.h Const tightening. 2006-03-05 02:47:29 -08:00
fetch-pack.c Don't force everybody to call setup_ident(). 2007-01-28 01:58:50 -08:00
fetch.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
fetch.h Teach git-local-fetch the --stdin switch 2006-07-27 19:33:48 -07:00
generate-cmdlist.sh use 'init' instead of 'init-db' for shipped docs and tools 2007-01-12 13:36:16 -08:00
git-add--interactive.perl git-add --interactive: hunk splitting 2006-12-18 16:28:45 -08:00
git-am.sh Merge branch 'jc/bare' 2007-01-11 16:50:36 -08:00
git-applymbox.sh -u is now default for 'git-mailinfo'. 2007-01-09 21:32:49 -08:00
git-applypatch.sh Fix more typos, primarily in the code 2006-07-10 00:36:44 -07:00
git-archimport.perl use 'init' instead of 'init-db' for shipped docs and tools 2007-01-12 13:36:16 -08:00
git-bisect.sh Use "git checkout -q" in git-bisect 2007-02-01 21:47:34 -08:00
git-checkout.sh add a quiet option to git-checkout 2007-02-01 21:36:47 -08:00
git-clean.sh Disallow working directory commands in a bare repository. 2007-01-10 15:03:09 -08:00
git-clone.sh Escape --upload-pack from expr. 2007-01-31 13:09:58 -08:00
git-commit.sh git-commit -s: no extra space when sign-offs appear at the end already. 2007-01-29 01:06:27 -08:00
git-compat-util.h Use inttypes.h rather than stdint.h. 2007-01-26 00:03:23 -08:00
git-cvsexportcommit.perl Make cvsexportcommit work with filenames with spaces and non-ascii characters. 2006-12-11 14:16:54 -08:00
git-cvsimport.perl cvsimport: activate -a option, really. 2007-01-22 12:20:14 -08:00
git-cvsserver.perl [PATCH] Rename git-repo-config to git-config. 2007-01-28 16:16:53 -08:00
git-fetch.sh Escape --upload-pack from expr. 2007-01-31 13:09:58 -08:00
git-gc.sh git-gc: do not run git-prune by default. 2007-01-21 23:28:28 -08:00
git-instaweb.sh [PATCH] Rename git-repo-config to git-config. 2007-01-28 16:16:53 -08:00
git-lost-found.sh git-fsck-objects is now synonym to git-fsck 2007-01-28 16:33:58 -08:00
git-ls-remote.sh Escape --upload-pack from expr. 2007-01-31 13:09:58 -08:00
git-merge-octopus.sh read-tree --aggressive 2006-02-06 21:43:27 -08:00
git-merge-one-file.sh Use git-merge-file in git-merge-one-file, too 2006-12-21 20:33:06 -08:00
git-merge-ours.sh git-merge-ours: make sure our index matches HEAD 2005-11-03 14:55:11 -08:00
git-merge-resolve.sh read-tree --aggressive 2006-02-06 21:43:27 -08:00
git-merge-stupid.sh Use Daniel's read-tree in the merge strategy 'resolve'. 2005-09-10 18:30:41 -07:00
git-merge.sh [PATCH] Rename git-repo-config to git-config. 2007-01-28 16:16:53 -08:00
git-p4import.py [PATCH] Rename git-repo-config to git-config. 2007-01-28 16:16:53 -08:00
git-parse-remote.sh git-fetch: Allow fetching the remote HEAD 2007-01-30 02:30:25 -08:00
git-pull.sh git-pull: disallow implicit merging to detached HEAD 2007-01-15 15:37:22 -08:00
git-quiltimport.sh Replace "echo -n" with printf in shell scripts. 2007-01-15 22:23:21 -08:00
git-rebase.sh Improved error message from git-rebase 2007-01-31 13:16:52 -08:00
git-relink.perl Big tool rename. 2005-09-07 17:45:20 -07:00
git-remote.perl Teach 'git remote' how to cleanup stale tracking branches. 2007-02-01 22:06:36 -08:00
git-repack.sh [PATCH] Rename git-repo-config to git-config. 2007-01-28 16:16:53 -08:00
git-request-pull.sh Pass -M to diff in request-pull 2006-12-04 13:39:27 -08:00
git-reset.sh Shell syntax fix in git-reset 2007-01-18 14:22:24 -08:00
git-resolve.sh merge and resolve: Output short hashes and .. in "Updating ..." 2006-09-30 22:13:28 -07:00
git-revert.sh [PATCH] Rename git-repo-config to git-config. 2007-01-28 16:16:53 -08:00
git-send-email.perl git-send-email: remove debugging output. 2007-01-30 02:30:25 -08:00
git-sh-setup.sh [PATCH] Rename git-repo-config to git-config. 2007-01-28 16:16:53 -08:00
git-svn.perl git-svn: do not let Git.pm warn if we prematurely close pipes 2007-02-01 21:51:36 -08:00
git-svnimport.perl use 'init' instead of 'init-db' for shipped docs and tools 2007-01-12 13:36:16 -08:00
git-tag.sh Fix git-tag -u 2007-01-30 21:03:11 -08:00
git-verify-tag.sh git-verify-tag: make sure we remove temporary file. 2007-01-03 12:34:20 -08:00
GIT-VERSION-GEN GIT v1.5.0-rc3 2007-01-31 15:41:49 -08:00
git.c Make fsck and fsck-objects be builtins. 2007-01-29 09:36:21 -08:00
git.spec.in Get rid of the dependency on RCS' merge program 2006-12-12 21:47:29 -08:00
gitk [PATCH] Rename git-repo-config to git-config. 2007-01-28 16:16:53 -08:00
grep.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
grep.h grep --all-match 2006-09-27 23:59:09 -07:00
hash-object.c Replace some calls to die(usage_str) with usage(usage_str). 2006-08-03 21:44:13 -07:00
help.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
http-fetch.c git-fsck-objects is now synonym to git-fsck 2007-01-28 16:33:58 -08:00
http-push.c Don't force everybody to call setup_ident(). 2007-01-28 01:58:50 -08:00
http.c http/ftp: optionally ask curl to not use EPSV command 2006-09-28 19:02:46 -07:00
http.h Work around http-fetch built with cURL 7.16.0 2006-12-27 16:44:30 -08:00
ident.c [PATCH] Rename git-repo-config to git-config. 2007-01-28 16:16:53 -08:00
imap-send.c short i/o: fix calls to write to use xwrite or write_in_full 2007-01-08 15:44:47 -08:00
index-pack.c index-pack: write-or-die instead of unchecked write-in-full. 2007-01-11 13:19:31 -08:00
INSTALL use 'init' instead of 'init-db' for shipped docs and tools 2007-01-12 13:36:16 -08:00
interpolate.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
interpolate.h do not discard constness in interp_set_entry value argument 2006-09-28 18:25:36 -07:00
list-objects.c pack-objects: further work on internal rev-list logic. 2006-09-07 02:46:02 -07:00
list-objects.h pack-objects: further work on internal rev-list logic. 2006-09-07 02:46:02 -07:00
local-fetch.c Don't force everybody to call setup_ident(). 2007-01-28 01:58:50 -08:00
lockfile.c Print a more accurate error message when we fail to create a lock file. 2007-01-06 10:42:49 -08:00
log-tree.c git-log -g --pretty=oneline should display the reflog message 2007-01-28 01:54:42 -08:00
log-tree.h Add msg_sep to diff_options 2006-06-26 14:58:41 -07:00
Makefile Make fsck and fsck-objects be builtins. 2007-01-29 09:36:21 -08:00
merge-base.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
merge-file.c Get rid of the dependency on RCS' merge program 2006-12-12 21:47:29 -08:00
merge-index.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
merge-recursive.c Convert output messages in merge-recursive to past tense. 2007-01-14 12:20:39 -08:00
merge-tree.c Handle invalid argc gently 2006-09-14 11:48:11 -07:00
mktag.c Use xmalloc instead of malloc 2006-08-31 16:24:39 -07:00
mktree.c Convert memcpy(a,b,20) to hashcpy(a,b). 2006-08-23 13:53:10 -07:00
object-refs.c Fix git-fsck-objects SIGSEGV/divide-by-zero 2006-09-04 15:24:10 -07:00
object.c Add git-for-each-ref: helper for language bindings 2006-09-16 10:22:02 -07:00
object.h Add git-for-each-ref: helper for language bindings 2006-09-16 10:22:02 -07:00
pack-check.c pack-check.c::verify_packfile(): don't run SHA-1 update on huge data 2007-01-04 22:17:59 -08:00
pack-redundant.c Do not use memcmp(sha1_1, sha1_2, 20) with hardcoded length. 2006-08-17 14:23:53 -07:00
pack.h Refactor the pack header reading function out of receive-pack.c 2007-01-24 18:08:02 -08:00
pager.c pager: default to LESS=FRSX not LESS=FRS 2006-10-22 20:28:10 -07:00
patch-delta.c make patch_delta() error cases a bit more verbose 2006-12-18 15:30:17 -08:00
patch-id.c Convert memcpy(a,b,20) to hashcpy(a,b). 2006-08-23 13:53:10 -07:00
path-list.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
path-list.h Extract helper bits from c-merge-recursive work 2006-07-26 13:36:36 -07:00
path.c Merge branch 'jc/detached-head' 2007-01-11 16:47:34 -08:00
peek-remote.c rename --exec to --upload-pack for fetch-pack and peek-remote 2007-01-24 16:12:15 -08:00
pkt-line.c make git a bit less cryptic on fetch errors 2006-12-18 15:31:28 -08:00
pkt-line.h Fix pkt-line.h to compile with a non-GCC compiler 2006-06-26 02:11:53 -07:00
quote.c Teach for-each-ref about a little language called Tcl. 2007-01-28 13:00:26 -08:00
quote.h Teach for-each-ref about a little language called Tcl. 2007-01-28 13:00:26 -08:00
reachable.c Sanitize for_each_reflog_ent() 2007-01-09 03:04:04 -08:00
reachable.h Move traversal of reachable objects into a separate library. 2007-01-06 22:57:34 -08:00
read-cache.c write-cache: do not leak the serialized cache-tree data. 2007-01-11 12:25:16 -08:00
README sanitize content of README file 2007-01-17 12:03:50 -08:00
receive-pack.c Don't force everybody to call setup_ident(). 2007-01-28 01:58:50 -08:00
reflog-walk.c Teach the '@{...}' notation to git-log -g 2007-02-01 21:50:16 -08:00
reflog-walk.h Fix --walk-reflog with --pretty=oneline 2007-01-20 21:32:31 -08:00
refs.c lock_any_ref_for_update(): do not accept malformatted refs. 2007-01-29 00:57:07 -08:00
refs.h Extend read_ref_at() to be usable from places other than sha1_name. 2007-01-19 17:57:53 -08:00
revision.c reflog inspection: introduce shortcut "-g" 2007-01-24 15:13:47 -08:00
revision.h Teach the revision walker to walk by reflogs with --walk-reflogs 2007-01-20 21:32:31 -08:00
rsh.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
rsh.h git-ssh-push/pull: usability improvements 2005-06-07 14:23:46 -07:00
run-command.c Use /dev/null for update hook stdin. 2006-12-30 22:22:14 -08:00
run-command.h Use /dev/null for update hook stdin. 2006-12-30 22:22:14 -08:00
send-pack.c Add a missing fork() error check. 2007-01-30 02:30:25 -08:00
server-info.c Don't coredump on bad refs in update-server-info. 2007-01-31 13:09:58 -08:00
setup.c Do not verify filenames in a bare repository 2007-01-20 19:10:26 -08:00
sha1_file.c Don't find objects in packs which aren't available anymore. 2007-02-01 22:27:47 -08:00
sha1_name.c provide a nice @{...} syntax to always mean the current branch reflog 2007-02-01 21:49:28 -08:00
shallow.c is_repository_shallow(): prototype fix. 2007-01-21 22:22:23 -08:00
shell.c Const tightening. 2006-03-05 02:47:29 -08:00
show-index.c Fix typo in show-index.c 2006-10-20 16:50:36 -07:00
sideband.c atomic write for sideband remote messages 2006-10-11 11:13:01 -07:00
sideband.h atomic write for sideband remote messages 2006-10-11 11:13:01 -07:00
ssh-fetch.c Don't force everybody to call setup_ident(). 2007-01-28 01:58:50 -08:00
ssh-pull.c Be more backward compatible with git-ssh-{push,pull}. 2005-09-15 14:56:37 -07:00
ssh-push.c Be more backward compatible with git-ssh-{push,pull}. 2005-09-15 14:56:37 -07:00
ssh-upload.c short i/o: fix calls to write to use xwrite or write_in_full 2007-01-08 15:44:47 -08:00
strbuf.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
strbuf.h [PATCH] Kill a bunch of pointer sign warnings for gcc4 2005-05-18 08:44:23 -07:00
tag.c Remove TYPE_* constant macros and use object_type enums consistently. 2006-07-12 23:18:03 -07:00
tag.h Be careful when dereferencing tags. 2005-11-02 16:50:58 -08:00
tar.h tar-tree: Introduce write_entry() 2006-03-25 16:35:43 -08:00
test-date.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
test-delta.c short i/o: fix calls to write to use xwrite or write_in_full 2007-01-08 15:44:47 -08:00
test-sha1.c test-sha1: test hashing large buffer 2006-06-24 02:59:20 -07:00
test-sha1.sh test-sha1: test hashing large buffer 2006-06-24 02:59:20 -07:00
trace.c short i/o: clean up the naming for the write_{in,or}_xxx family 2007-01-08 15:44:47 -08:00
tree-diff.c Make git-cherry handle root trees 2006-10-26 18:31:17 -07:00
tree-walk.c get_tree_entry: map blank requested entry to tree root 2007-01-09 14:08:41 -08:00
tree-walk.h tree_entry(): new tree-walking helper function 2006-05-30 23:03:01 -07:00
tree.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
tree.h Remove last vestiges of generic tree_entry_list 2006-05-29 19:08:37 -07:00
unpack-file.c short i/o: fix calls to write to use xwrite or write_in_full 2007-01-08 15:44:47 -08:00
unpack-trees.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
unpack-trees.h read-tree: further loosen "working file will be lost" check. 2006-12-05 23:25:52 -08:00
update-server-info.c Make the rest of commands work from a subdirectory. 2005-11-28 23:13:02 -08:00
upload-pack.c shallow repository: disable unsupported operations for now. 2007-01-21 22:23:58 -08:00
usage.c Introduce a global level warn() function. 2006-12-21 22:59:34 -08:00
utf8.c commit-tree: cope with different ways "utf-8" can be spelled. 2006-12-30 15:58:43 -08:00
utf8.h commit-tree: cope with different ways "utf-8" can be spelled. 2006-12-30 15:58:43 -08:00
var.c Don't force everybody to call setup_ident(). 2007-01-28 01:58:50 -08:00
write_or_die.c write_in_full: size_t is unsigned. 2007-01-26 17:39:03 -08:00
wt-status.c wt-status: Actually accept `color.status.BLAH' configuration variables. 2007-01-28 11:04:44 -08:00
wt-status.h Provide better feedback for the untracked only case in status output 2007-01-10 14:29:21 -08:00
xdiff-interface.c move read_mmfile() into xdiff-interface 2006-12-21 23:10:14 -08:00
xdiff-interface.h move read_mmfile() into xdiff-interface 2006-12-21 23:10:14 -08:00

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

	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/tutorial.txt to get started, then see
Documentation/everyday.txt for a useful minimum set of commands,
and "man git-commandname" for documentation of each command.
CVS users may also want to read Documentation/cvs-migration.txt.

Many Git online resources are accessible from http://git.or.cz/
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.