1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-05-22 05:06:09 +02:00
Git Source Code Mirror. Please follow Documentation/SubmittingPatches procedure for any of your improvements.
Go to file
Nicolas Pitre 78d1e84fe5 compute a CRC32 for each object as stored in a pack
The most important optimization for performance when repacking is the
ability to reuse data from a previous pack as is and bypass any delta
or even SHA1 computation by simply copying the raw data from one pack
to another directly.

The problem with  this is that any data corruption within a copied object
would go unnoticed and the new (repacked) pack would be self-consistent
with its own checksum despite containing a corrupted object.  This is a
real issue that already happened at least once in the past.

In some attempt to prevent this, we validate the copied data by inflating
it and making sure no error is signaled by zlib.  But this is still not
perfect as a significant portion of a pack content is made of object
headers and references to delta base objects which are not deflated and
therefore not validated when repacking actually making the pack data reuse
still not as safe as it could be.

Of course a full SHA1 validation could be performed, but that implies
full data inflating and delta replaying which is extremely costly, which
cost the data reuse optimization was designed to avoid in the first place.

So the best solution to this is simply to store a CRC32 of the raw pack
data for each object in the pack index.  This way any object in a pack can
be validated before being copied as is in another pack, including header
and any other non deflated data.

Why CRC32 instead of a faster checksum like Adler32?  Quoting Wikipedia:

   Jonathan Stone discovered in 2001 that Adler-32 has a weakness for very
   short messages. He wrote "Briefly, the problem is that, for very short
   packets, Adler32 is guaranteed to give poor coverage of the available
   bits. Don't take my word for it, ask Mark Adler. :-)" The problem is
   that sum A does not wrap for short messages. The maximum value of A for
   a 128-byte message is 32640, which is below the value 65521 used by the
   modulo operation. An extended explanation can be found in RFC 3309,
   which mandates the use of CRC32 instead of Adler-32 for SCTP, the
   Stream Control Transmission Protocol.

In the context of a GIT pack, we have lots of small objects, especially
deltas, which are likely to be quite small and in a size range for which
Adler32 is dimed not to be sufficient.  Another advantage of CRC32 is the
possibility for recovery from certain types of small corruptions like
single bit errors which are the most probable type of corruptions.

OK what this patch does is to compute the CRC32 of each object written to
a pack within pack-objects.  It is not written to the index yet and it is
obviously not validated when reusing pack data yet either.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-04-10 12:48:14 -07:00
Documentation git-archive: make tar the default format 2007-04-09 18:51:40 -07:00
arm
compat Add a compat/strtoumax.c for Solaris 8. 2007-02-19 18:20:30 -08:00
contrib Merge branch 'maint' 2007-04-05 16:34:51 -07:00
git-gui Merge branch 'master' of git://repo.or.cz/git-gui 2007-03-12 23:14:07 -07:00
gitweb Merge branch 'maint' 2007-04-05 16:34:51 -07:00
mozilla-sha1
perl Do not output "GEN " when generating perl.mak 2007-03-14 01:33:49 -07:00
ppc Assorted typo fixes 2007-02-03 21:49:54 -08:00
t git-archive: make tar the default format 2007-04-09 18:51:40 -07:00
templates Reimplement emailing part of hooks--update in contrib/hooks/post-receive-email 2007-03-31 01:21:18 -07:00
xdiff xdiff/xutils.c(xdl_hash_record): factor out whitespace handling 2007-03-19 22:17:25 -07:00
.gitignore A new merge stragety 'subtree'. 2007-04-07 02:29:40 -07:00
.mailmap .mailmap maintenance after pulling from git-svn 2007-02-23 03:11:52 -08:00
COPYING
GIT-VERSION-GEN GIT 1.5.1 2007-04-03 22:47:01 -07:00
INSTALL use 'init' instead of 'init-db' for shipped docs and tools 2007-01-12 13:36:16 -08:00
Makefile A new merge stragety 'subtree'. 2007-04-07 02:29:40 -07:00
README Update README to point at a few key periodical messages to the list 2007-03-25 17:42:32 -07:00
RelNotes Start 1.5.2 cycle by prepareing RelNotes for it. 2007-04-07 23:59:32 -07:00
alloc.c Add NO_C99_FORMAT to support older compilers. 2006-08-02 00:27:18 -07:00
archive-tar.c convert object type handling from a string to a number 2007-02-27 01:34:21 -08:00
archive-zip.c convert object type handling from a string to a number 2007-02-27 01:34:21 -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 convert object type handling from a string to a number 2007-02-27 01:34:21 -08:00
blob.h
builtin-add.c Merge branch 'jc/index-output' 2007-04-07 02:26:24 -07:00
builtin-annotate.c annotate: fix for cvsserver. 2007-02-06 01:52:04 -08:00
builtin-apply.c Merge branch 'jc/index-output' 2007-04-07 02:26:24 -07:00
builtin-archive.c git-archive: make tar the default format 2007-04-09 18:51:40 -07:00
builtin-blame.c blame: cmp_suspect is not "cmp" anymore. 2007-03-20 23:37:51 -07:00
builtin-branch.c Make builtin-branch.c handle the git config file 2007-04-06 16:54:39 -07:00
builtin-bundle.c Rename warn() to warning() to fix symbol conflicts on BSD and Mac OS 2007-03-31 01:11:11 -07:00
builtin-cat-file.c convert object type handling from a string to a number 2007-02-27 01:34:21 -08:00
builtin-check-ref-format.c Further clean-up: usage() vs die() 2006-08-03 21:55:41 -07:00
builtin-checkout-index.c _GIT_INDEX_OUTPUT: allow plumbing to output to an alternative index file. 2007-04-03 23:44:32 -07:00
builtin-commit-tree.c Cleanup check_valid in commit-tree. 2007-02-27 21:40:18 -08:00
builtin-config.c git-config: document --rename-section, provide --remove-section 2007-03-03 19:59:37 -08:00
builtin-count-objects.c get rid of num_packed_objects() 2007-04-10 12:48:14 -07:00
builtin-describe.c Mechanical conversion to use prefixcmp() 2007-02-20 22:03:15 -08:00
builtin-diff-files.c Allow git-diff exit with codes similar to diff(1) 2007-03-14 16:21:19 -07:00
builtin-diff-index.c Allow git-diff exit with codes similar to diff(1) 2007-03-14 16:21:19 -07:00
builtin-diff-tree.c Allow git-diff exit with codes similar to diff(1) 2007-03-14 16:21:19 -07:00
builtin-diff.c Allow git-diff exit with codes similar to diff(1) 2007-03-14 16:21:19 -07:00
builtin-fetch--tool.c builtin-fetch--tool: fix reflog notes. 2007-02-28 17:02:18 -08:00
builtin-fmt-merge-msg.c Merge branch 'maint' 2007-02-27 22:15:42 -08:00
builtin-for-each-ref.c General const correctness fixes 2007-03-07 10:47:10 -08:00
builtin-fsck.c get rid of num_packed_objects() 2007-04-10 12:48:14 -07:00
builtin-gc.c Make gc a builtin. 2007-03-17 00:34:19 -07:00
builtin-grep.c Initialize tree descriptors with a helper function rather than by hand. 2007-03-21 10:21:57 -07:00
builtin-init-db.c Mechanical conversion to use prefixcmp() 2007-02-20 22:03:15 -08:00
builtin-log.c Replace remaining instances of strdup with xstrdup. 2007-03-19 18:16:03 -07:00
builtin-ls-files.c Optimize directory listing with pathspec limiter. 2007-03-31 17:41:32 -07:00
builtin-ls-tree.c prefixcmp(): fix-up leftover strncmp(). 2007-02-20 22:03:15 -08:00
builtin-mailinfo.c git-mailinfo fixes for patch munging 2007-03-31 00:59:19 -07:00
builtin-mailsplit.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
builtin-merge-base.c Make merge-base a built-in. 2007-01-09 17:57:03 -08:00
builtin-merge-file.c move read_mmfile() into xdiff-interface 2006-12-21 23:10:14 -08:00
builtin-mv.c Merge branch 'jc/index-output' 2007-04-07 02:26:24 -07:00
builtin-name-rev.c Merge branch 'js/name-rev-fix' 2007-02-20 22:24:03 -08:00
builtin-pack-objects.c compute a CRC32 for each object as stored in a pack 2007-04-10 12:48:14 -07:00
builtin-pack-refs.c Mechanical conversion to use prefixcmp() 2007-02-20 22:03:15 -08:00
builtin-prune-packed.c prune-packed: add -q to usage 2007-01-18 14:30:05 -08:00
builtin-prune.c minor git-prune optimization 2007-03-20 22:17:47 -07:00
builtin-push.c git-push to multiple locations does not stop at the first failure 2007-04-07 02:27:31 -07:00
builtin-read-tree.c Merge branch 'jc/read-tree-df' (early part) 2007-04-07 23:52:40 -07:00
builtin-reflog.c Initialize tree descriptors with a helper function rather than by hand. 2007-03-21 10:21:57 -07:00
builtin-rerere.c rerere: make sorting really stable. 2007-04-04 14:12:03 -07:00
builtin-rev-list.c Merge branch 'maint' 2007-04-05 16:34:51 -07:00
builtin-rev-parse.c prefixcmp(): fix-up leftover strncmp(). 2007-02-20 22:03:15 -08:00
builtin-revert.c git-revert: Revert revert message to old behaviour 2007-03-24 02:50:22 -07:00
builtin-rm.c _GIT_INDEX_OUTPUT: allow plumbing to output to an alternative index file. 2007-04-03 23:44:32 -07:00
builtin-runstatus.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
builtin-shortlog.c shortlog: prompt when reading from terminal by mistake 2007-03-14 01:33:41 -07:00
builtin-show-branch.c General const correctness fixes 2007-03-07 10:47:10 -08:00
builtin-show-ref.c Merge branch 'maint' 2007-02-24 01:42:06 -08:00
builtin-stripspace.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
builtin-symbolic-ref.c add logref support to git-symbolic-ref 2007-01-28 02:16:46 -08:00
builtin-tar-tree.c prefixcmp(): fix-up mechanical conversion. 2007-02-20 22:03:15 -08:00
builtin-unpack-objects.c add overflow tests on pack offset variables 2007-04-10 12:48:14 -07:00
builtin-update-index.c Merge branch 'jc/index-output' 2007-04-07 02:26:24 -07: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 _GIT_INDEX_OUTPUT: allow plumbing to output to an alternative index file. 2007-04-03 23:44:32 -07:00
builtin.h Make gc a builtin. 2007-03-17 00:34:19 -07: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 get rid of num_packed_objects() 2007-04-10 12:48:14 -07: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 Cast 64 bit off_t to 32 bit size_t 2007-03-07 11:15:26 -08:00
commit.c Merge branch 'maint' to synchronize with 1.5.0.6 2007-03-28 15:39:57 -07:00
commit.h Merge branch 'js/commit-format' 2007-03-02 00:37:12 -08:00
config.c Fix renaming branch without config file 2007-04-05 14:53:22 -07:00
config.mak.in Add --with-tcltk and --without-tcltk to configure. 2007-03-31 23:59:47 -07:00
configure.ac Eliminate checks of user-specified Tcl/Tk interpreter. 2007-03-31 23:59:47 -07:00
connect.c Fix "getaddrinfo()" buglet 2007-03-27 13:00:13 -07:00
convert-objects.c General const correctness fixes 2007-03-07 10:47:10 -08:00
convert.c Make AutoCRLF ternary variable. 2007-02-14 11:19:28 -08:00
copy.c
csum-file.c compute a CRC32 for each object as stored in a pack 2007-04-10 12:48:14 -07:00
csum-file.h compute a CRC32 for each object as stored in a pack 2007-04-10 12:48:14 -07:00
ctype.c
daemon.c prefixcmp(): fix-up mechanical conversion. 2007-02-20 22:03:15 -08:00
date.c show_date(): rename the "relative" parameter to "mode" 2007-02-27 17:29:37 -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 Teach --quiet to diff backends. 2007-03-14 16:21:19 -07:00
diff.c Show binary file size change in diff --stat 2007-04-05 15:07:16 -07:00
diff.h diff --quiet 2007-03-14 16:21:19 -07:00
diffcore-break.c Cast 64 bit off_t to 32 bit size_t 2007-03-07 11:15:26 -08: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 Cast 64 bit off_t to 32 bit size_t 2007-03-07 11:15:26 -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 Cast 64 bit off_t to 32 bit size_t 2007-03-07 11:15:26 -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 Optimize directory listing with pathspec limiter. 2007-03-31 17:41:32 -07:00
dir.h Optimize directory listing with pathspec limiter. 2007-03-31 17:41:32 -07: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 Add core.symlinks to mark filesystems that do not support symbolic links. 2007-03-02 16:58:05 -08:00
environment.c Limit the size of the new delta_base_cache 2007-03-18 22:43:37 -07:00
exec_cmd.c Mechanical conversion to use prefixcmp() 2007-02-20 22:03:15 -08:00
exec_cmd.h Const tightening. 2006-03-05 02:47:29 -08:00
fast-import.c Rename warn() to warning() to fix symbol conflicts on BSD and Mac OS 2007-03-31 01:11:11 -07:00
fetch-pack.c Merge branch 'js/fetch-progress' (early part) 2007-03-04 17:31:21 -08:00
fetch.c Initialize tree descriptors with a helper function rather than by hand. 2007-03-21 10:21:57 -07: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 -i: update removed path correctly. 2007-02-07 10:56:38 -08:00
git-am.sh Use diff* with --exit-code in git-am, git-rebase and git-merge-ours 2007-03-24 23:01:36 -07:00
git-applymbox.sh applymbox: brown paper bag fix. 2007-03-16 21:22:05 -07:00
git-applypatch.sh Fix more typos, primarily in the code 2006-07-10 00:36:44 -07:00
git-archimport.perl git-archimport: allow remapping branch names 2007-03-07 10:30:22 -08:00
git-bisect.sh git-bisect: allow bisecting with only one bad commit. 2007-04-06 17:55:57 -07:00
git-checkout.sh checkout: allow detaching to HEAD even when switching to the tip of a branch 2007-04-03 23:43:59 -07:00
git-clean.sh Disallow working directory commands in a bare repository. 2007-01-10 15:03:09 -08:00
git-clone.sh http-fetch: don't use double-slash as directory separator in URLs 2007-03-28 04:44:16 -07:00
git-commit.sh git-read-tree --index-output=<file> 2007-04-03 23:44:32 -07:00
git-compat-util.h make overflow test on delta base offset work regardless of variable size 2007-04-10 12:48:14 -07:00
git-cvsexportcommit.perl Merge branch 'maint' 2007-02-28 14:18:57 -08:00
git-cvsimport.perl cvsimport: Improve usage error reporting 2007-04-06 16:46:11 -07:00
git-cvsserver.perl cvsserver: further improve messages on commit and status 2007-03-14 02:09:33 -07:00
git-fetch.sh Merge branch 'js/fetch-progress' 2007-04-08 23:27:22 -07:00
git-instaweb.sh [PATCH] Rename git-repo-config to git-config. 2007-01-28 16:16:53 -08:00
git-lost-found.sh Fix lost-found to show commits only referenced by reflogs 2007-04-05 15:00:03 -07:00
git-ls-remote.sh Add git-bundle: move objects and references by archive 2007-02-22 22:30:33 -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 Use diff* with --exit-code in git-am, git-rebase and git-merge-ours 2007-03-24 23:01:36 -07:00
git-merge-resolve.sh Assorted typo fixes 2007-02-03 21:49:54 -08:00
git-merge-stupid.sh
git-merge.sh A new merge stragety 'subtree'. 2007-04-07 02:29:40 -07:00
git-mergetool.sh mergetool: Clean up description of files and prompts for merge resolutions 2007-03-29 22:46:16 -04: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, git-branch: Support local --track via a special remote '.' 2007-03-16 02:10:12 -07:00
git-pull.sh git-pull: disallow implicit merging to detached HEAD 2007-01-15 15:37:22 -08:00
git-quiltimport.sh git-quiltimport /bin/sh-ism fix 2007-03-29 23:11:33 -07:00
git-rebase.sh Use diff* with --exit-code in git-am, git-rebase and git-merge-ours 2007-03-24 23:01:36 -07:00
git-relink.perl
git-remote.perl Teach git-remote to list pushed branches. 2007-03-20 01:54:49 -07: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-send-email.perl Avoid composing too long "References" header. 2007-04-06 16:49:44 -07:00
git-sh-setup.sh Commands requiring a work tree must not run in GIT_DIR 2007-02-05 14:02:16 -08:00
git-svn.perl git-svn: fix log command to avoid infinite loop on long commit messages 2007-04-08 19:54:07 -07: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.c Revert "builtin-archive: use RUN_SETUP" 2007-04-05 14:10:10 -07:00
git.spec.in RPM spec: include git-p4 in the list of all packages. 2007-04-04 16:01:49 -07:00
gitk [PATCH] prefer "git COMMAND" over "git-COMMAND" in gitk 2007-03-21 22:02:19 +11: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 index_fd(): pass optional path parameter as hint for blob conversion 2007-02-28 12:00:00 -08:00
help.c use xrealloc in help.c 2007-03-27 16:57:57 -07:00
http-fetch.c Fix lseek(2) calls with args 2 and 3 swapped 2007-04-05 15:39:12 -07:00
http-push.c Fix lseek(2) calls with args 2 and 3 swapped 2007-04-05 15:39:12 -07: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 Rename get_ident() to fmt_ident() and make it available to outside 2007-02-04 17:50:14 -08:00
imap-send.c prefixcmp(): fix-up leftover strncmp(). 2007-02-20 22:03:15 -08:00
index-pack.c add overflow tests on pack offset variables 2007-04-10 12:48:14 -07:00
interpolate.c General const correctness fixes 2007-03-07 10:47:10 -08:00
interpolate.h General const correctness fixes 2007-03-07 10:47:10 -08:00
list-objects.c Initialize tree descriptors with a helper function rather than by hand. 2007-03-21 10:21:57 -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 [PATCH] local-fetch.c: some error printing cleanup 2007-03-16 21:27:35 -07:00
lockfile.c git-read-tree --index-output=<file> 2007-04-03 23:44:32 -07:00
log-tree.c format-patch --attach: not folding some long headers. 2007-03-04 17:31:29 -08:00
log-tree.h Add msg_sep to diff_options 2006-06-26 14:58:41 -07:00
match-trees.c A new merge stragety 'subtree'. 2007-04-07 02:29:40 -07:00
merge-file.c convert object type handling from a string to a number 2007-02-27 01:34:21 -08:00
merge-index.c Fix merge-index 2007-03-19 02:48:37 -07:00
merge-recursive.c A new merge stragety 'subtree'. 2007-04-07 02:29:40 -07:00
merge-tree.c Remove "pathlen" from "struct name_entry" 2007-03-21 10:21:56 -07:00
mktag.c convert object type handling from a string to a number 2007-02-27 01:34:21 -08:00
mktree.c convert object type handling from a string to a number 2007-02-27 01:34:21 -08:00
object-refs.c Fix git-fsck-objects SIGSEGV/divide-by-zero 2006-09-04 15:24:10 -07:00
object.c Don't ever return corrupt objects from "parse_object()" 2007-03-20 22:17:17 -07:00
object.h get rid of lookup_object_type() 2007-02-27 01:34:21 -08:00
pack-check.c get rid of num_packed_objects() 2007-04-10 12:48:14 -07:00
pack-redundant.c [PATCH] clean up pack index handling a bit 2007-03-16 21:27:36 -07:00
pack.h [PATCH] clean up pack index handling a bit 2007-03-16 21:27:36 -07:00
pager.c pager: Work around window resizing bug in 'less' 2007-02-05 15:42:36 -08: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 General const correctness fixes 2007-03-07 10:47:10 -08:00
peek-remote.c prefixcmp(): fix-up mechanical conversion. 2007-02-20 22:03: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 Initialize tree descriptors with a helper function rather than by hand. 2007-03-21 10:21:57 -07:00
reachable.h Move traversal of reachable objects into a separate library. 2007-01-06 22:57:34 -08:00
read-cache.c Merge branch 'jc/read-tree-df' (early part) 2007-04-07 23:52:40 -07:00
receive-pack.c Use run_command within receive-pack to invoke index-pack 2007-03-12 23:40:18 -07:00
reflog-walk.c log --reflog: use dwim_log 2007-02-08 17:48:22 -08:00
reflog-walk.h log --reflog: honour --relative-date 2007-02-08 16:20:52 -08:00
refs.c Make builtin-branch.c handle the git config file 2007-04-06 16:54:39 -07:00
refs.h scan reflogs independently from refs 2007-02-03 11:57:18 -08:00
revision.c Rename warn() to warning() to fix symbol conflicts on BSD and Mac OS 2007-03-31 01:11:11 -07:00
revision.h git-log --first-parent: show only the first parent log 2007-03-14 16:22:18 -07:00
rsh.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
rsh.h
run-command.c Teach run-command to redirect stdout to /dev/null 2007-03-12 23:40:17 -07:00
run-command.h Teach run-command to redirect stdout to /dev/null 2007-03-12 23:40:17 -07:00
send-pack.c Use run_command within send-pack 2007-03-12 23:40:18 -07:00
server-info.c Don't coredump on bad refs in update-server-info. 2007-01-31 13:09:58 -08:00
setup.c Merge branch 'maint' 2007-03-10 22:07:26 -08:00
sha1_file.c make overflow test on delta base offset work regardless of variable size 2007-04-10 12:48:14 -07:00
sha1_name.c get rid of num_packed_objects() 2007-04-10 12:48:14 -07:00
shallow.c is_repository_shallow(): prototype fix. 2007-01-21 22:22:23 -08:00
shell.c Mechanical conversion to use prefixcmp() 2007-02-20 22:03:15 -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
ssh-push.c
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
tag.c get rid of lookup_object_type() 2007-02-27 01:34:21 -08:00
tag.h
tar.h tar-tree: Introduce write_entry() 2006-03-25 16:35:43 -08:00
test-chmtime.c Add test-chmtime: a utility to change mtime on files 2007-02-25 11:09:56 -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-match-trees.c A new merge stragety 'subtree'. 2007-04-07 02:29:40 -07: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 git-branch, git-checkout: autosetup for remote branch tracking 2007-03-10 23:41:58 -08:00
tree-diff.c tree_entry_interesting(): allow it to say "everything is interesting" 2007-03-22 00:36:00 -07:00
tree-walk.c Switch over tree descriptors to contain a pre-parsed entry 2007-03-21 11:15:26 -07:00
tree-walk.h Switch over tree descriptors to contain a pre-parsed entry 2007-03-21 11:15:26 -07:00
tree.c Initialize tree descriptors with a helper function rather than by hand. 2007-03-21 10:21:57 -07:00
tree.h Remove last vestiges of generic tree_entry_list 2006-05-29 19:08:37 -07:00
unpack-file.c convert object type handling from a string to a number 2007-02-27 01:34:21 -08:00
unpack-trees.c Fix switching to a branch with D/F when current branch has file D. 2007-04-04 00:25:10 -07:00
unpack-trees.h unpack-trees: get rid of *indpos parameter. 2007-04-04 00:19:28 -07:00
update-server-info.c
upload-pack.c git-upload-pack: make sure we close unused pipe ends 2007-03-29 01:41:23 -07:00
usage.c Rename warn() to warning() to fix symbol conflicts on BSD and Mac OS 2007-03-31 01:11:11 -07:00
utf8.c Merge branch 'maint' 2007-03-03 19:47:46 -08:00
utf8.h Actually make print_wrapped_text() useful 2007-02-27 17:29:02 -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 Optimize directory listing with pathspec limiter. 2007-03-31 17:41:32 -07: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 Cast 64 bit off_t to 32 bit size_t 2007-03-07 11:15:26 -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.

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.