git-commit-vandalism/Documentation
Shawn O. Pearce 60bb8b1453 Fully activate the sliding window pack access.
This finally turns on the sliding window behavior for packfile data
access by mapping limited size windows and chaining them under the
packed_git->windows list.

We consider a given byte offset to be within the window only if there
would be at least 20 bytes (one hash worth of data) accessible after
the requested offset.  This range selection relates to the contract
that use_pack() makes with its callers, allowing them to access
one hash or one object header without needing to call use_pack()
for every byte of data obtained.

In the worst case scenario we will map the same page of data twice
into memory: once at the end of one window and once again at the
start of the next window.  This duplicate page mapping will happen
only when an object header or a delta base reference is spanned
over the end of a window and is always limited to just one page of
duplication, as no sane operating system will ever have a page size
smaller than a hash.

I am assuming that the possible wasted page of virtual address
space is going to perform faster than the alternatives, which
would be to copy the object header or ref delta into a temporary
buffer prior to parsing, or to check the window range on every byte
during header parsing.  We may decide to revisit this decision in
the future since this is just a gut instinct decision and has not
actually been proven out by experimental testing.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-12-29 11:36:45 -08:00
..
howto Add Documentation/howto/setup-git-server-over-http.txt 2006-08-10 15:07:11 -07:00
technical racy-git: documentation updates. 2006-12-18 14:18:54 -08:00
.gitignore
asciidoc.conf escape tilde in Documentation/git-rev-parse.txt 2006-10-03 01:04:19 -07:00
build-docdep.perl
callouts.xsl spurious .sp in manpages 2006-12-13 09:41:18 -08:00
config.txt Fully activate the sliding window pack access. 2006-12-29 11:36:45 -08:00
core-tutorial.txt Provide more meaningful output from 'git init-db'. 2006-12-15 22:31:00 -08:00
cvs-migration.txt Documentation: simpler shared repository creation 2006-12-08 20:11:39 -08:00
diff-format.txt Update documentation to remove incorrect GIT_DIFF_OPTS example. 2006-11-27 12:08:36 -08:00
diff-options.txt Document --numstat in git-apply and git-diff 2006-12-26 00:15:26 -08:00
diffcore.txt
everyday.txt everyday: replace a few 'prune' and 'repack' with 'gc' 2006-12-27 02:00:30 -08:00
fetch-options.txt
git-add.txt git-add -f: allow adding otherwise ignored files. 2006-12-25 17:46:38 -08:00
git-am.txt
git-annotate.txt
git-apply.txt Document --numstat in git-apply and git-diff 2006-12-26 00:15:26 -08:00
git-applymbox.txt
git-applypatch.txt
git-archimport.txt
git-archive.txt git-archive: update documentation 2006-09-25 21:17:43 -07:00
git-bisect.txt
git-blame.txt Documentation: move blame examples 2006-11-09 10:44:56 -08:00
git-branch.txt Documentation/git-branch: new -r to delete remote-tracking branches. 2006-12-20 20:36:42 -08:00
git-cat-file.txt
git-check-ref-format.txt
git-checkout-index.txt
git-checkout.txt
git-cherry-pick.txt cherry-pick: make -r the default 2006-10-05 17:54:14 -07:00
git-cherry.txt git-cherry: document limit and add diagram 2006-10-26 18:53:18 -07:00
git-clean.txt
git-clone.txt git-clone: lose the traditional 'no-separate-remote' layout 2006-12-16 13:01:41 -08:00
git-commit-tree.txt
git-commit.txt make commit message a little more consistent and conforting 2006-12-15 22:29:54 -08:00
git-convert-objects.txt
git-count-objects.txt count-objects -v: show number of packs as well. 2006-12-27 01:05:00 -08:00
git-cvsexportcommit.txt cvsexportcommit - add -a (add author line) flag, cleanup warnings 2006-07-23 22:51:14 -07:00
git-cvsimport.txt Documentation: convert uses of git-link macro to gitlink 2006-08-02 11:32:04 -07:00
git-cvsserver.txt
git-daemon.txt Documentation: add git in /etc/services. 2006-10-27 02:10:52 -07:00
git-describe.txt
git-diff-files.txt Assorted typo fixes 2006-07-09 02:42:41 -07:00
git-diff-index.txt Minor grammar fixes for git-diff-index.txt 2006-11-02 18:03:31 -08:00
git-diff-stages.txt
git-diff-tree.txt Move --pretty options into Documentation/pretty-formats.txt 2006-11-22 16:06:32 -08:00
git-diff.txt diff documentation: mostly talk about <commit> 2006-12-20 14:41:54 -08:00
git-fetch-pack.txt improve fetch-pack's handling of kept packs 2006-11-03 00:24:07 -08:00
git-fetch.txt
git-fmt-merge-msg.txt
git-for-each-ref.txt Documentation: fix git-format-patch mark-up and link it from git.txt 2006-10-28 14:25:41 -07:00
git-format-patch.txt Add option to set initial In-Reply-To/References 2006-07-14 20:41:37 -07:00
git-fsck-objects.txt
git-gc.txt Create 'git gc' to perform common maintenance operations. 2006-12-27 01:53:03 -08:00
git-get-tar-commit-id.txt
git-grep.txt grep --all-match 2006-09-27 23:59:09 -07:00
git-hash-object.txt
git-http-fetch.txt Teach git-http-fetch the --stdin switch 2006-07-27 19:33:48 -07:00
git-http-push.txt Documentation: add missing second colons and remove a typo 2006-10-12 09:42:36 -07:00
git-imap-send.txt
git-index-pack.txt remove .keep pack lock files when done with refs update 2006-11-03 00:24:07 -08:00
git-init-db.txt Document receive.denyNonFastforwards 2006-09-20 23:32:22 -07:00
git-instaweb.txt Add git-instaweb, instantly browse the working repo with gitweb 2006-07-01 18:29:26 -07:00
git-local-fetch.txt Teach git-local-fetch the --stdin switch 2006-07-27 19:33:48 -07:00
git-log.txt Move --pretty options into Documentation/pretty-formats.txt 2006-11-22 16:06:32 -08:00
git-lost-found.txt
git-ls-files.txt Documentation about exclude/ignore files 2006-07-13 21:52:42 -07:00
git-ls-remote.txt git-ls-remote(1): document --upload-pack 2006-08-25 19:25:58 -07:00
git-ls-tree.txt
git-mailinfo.txt
git-mailsplit.txt Assorted typo fixes 2006-07-09 02:42:41 -07:00
git-merge-base.txt
git-merge-file.txt Fix mis-mark-up in git-merge-file.txt documentation 2006-12-17 01:14:44 -08:00
git-merge-index.txt Get rid of the dependency on RCS' merge program 2006-12-12 21:47:29 -08:00
git-merge-one-file.txt
git-merge-tree.txt
git-merge.txt Use GIT_REFLOG_ACTION environment variable instead. 2006-12-28 01:05:15 -08:00
git-mktag.txt
git-mktree.txt
git-mv.txt
git-name-rev.txt typofix (git-name-rev documentation) 2006-07-11 12:45:20 -07:00
git-p4import.txt Assorted typo fixes 2006-07-09 02:42:41 -07:00
git-pack-objects.txt git-pack-objects progress flag documentation and cleanup 2006-11-07 16:05:37 -08:00
git-pack-redundant.txt Assorted typo fixes 2006-07-09 02:42:41 -07:00
git-pack-refs.txt Document git-pack-refs and link it to git(7). 2006-11-06 08:43:34 -08:00
git-parse-remote.txt
git-patch-id.txt
git-peek-remote.txt
git-prune-packed.txt
git-prune.txt
git-pull.txt Mention that pull can work locally in the synopsis 2006-10-29 12:36:27 -08:00
git-push.txt git-push: document removal of remote ref with :<dst> pathspec 2006-12-13 01:11:05 -08:00
git-quiltimport.txt
git-read-tree.txt read-tree: document --exclude-per-directory 2006-12-05 23:44:23 -08:00
git-rebase.txt Merge branch 'maint' 2006-11-06 22:56:07 -08:00
git-receive-pack.txt Document receive.denyNonFastforwards 2006-09-20 23:32:22 -07:00
git-reflog.txt git-reflog: gc.* configuration and documentation. 2006-12-27 01:47:57 -08:00
git-relink.txt
git-repack.txt Merge branch 'np/pack' 2006-10-22 22:51:42 -07:00
git-repo-config.txt Add --add option to git-repo-config 2006-12-15 22:31:01 -08:00
git-request-pull.txt
git-rerere.txt rerere gc: honor configuration and document it 2006-12-27 01:33:24 -08:00
git-reset.txt Document git-reset <commit> -- <paths>... 2006-12-26 00:21:01 -08:00
git-resolve.txt
git-rev-list.txt revision: --skip=<n> 2006-12-20 11:26:11 -08:00
git-rev-parse.txt Merge branch 'jc/pickaxe' 2006-11-07 16:33:59 -08:00
git-revert.txt
git-rm.txt git-rm: Documentation 2006-12-25 03:29:08 -08:00
git-runstatus.txt Document git-runstatus 2006-11-18 14:04:45 -08:00
git-send-email.txt git-send-email: Read the default SMTP server from the GIT config file 2006-10-29 12:45:23 -08:00
git-send-pack.txt Documentation: add missing second colons and remove a typo 2006-10-12 09:42:36 -07:00
git-sh-setup.txt
git-shell.txt
git-shortlog.txt Build in shortlog 2006-11-19 22:59:05 -08:00
git-show-branch.txt show-branch --reflog: add documentation. 2006-12-26 00:11:50 -08:00
git-show-index.txt
git-show-ref.txt show-ref --hash=len, --abbrev=len, and --abbrev 2006-10-01 00:32:44 -07:00
git-show.txt git-show: grok blobs, trees and tags, too 2006-12-14 02:56:24 -08:00
git-ssh-fetch.txt
git-ssh-upload.txt
git-status.txt Documentation: git-status takes the same options as git-commit 2006-08-08 21:55:05 -07:00
git-stripspace.txt
git-svn.txt git-svn: rename 'commit' command to 'set-tree' 2006-12-16 05:17:56 -08:00
git-svnimport.txt markup fix in svnimport documentation. 2006-12-17 10:33:24 -08:00
git-symbolic-ref.txt De-emphasise the symbolic link documentation. 2006-12-01 21:57:47 -08:00
git-tag.txt git-tag: support -F <file> option 2006-12-21 22:44:04 -08:00
git-tar-tree.txt Remove upload-tar and make git-tar-tree a thin wrapper to git-archive 2006-09-24 19:55:08 -07:00
git-tools.txt Assorted typo fixes 2006-07-09 02:42:41 -07:00
git-unpack-file.txt
git-unpack-objects.txt unpack-objects -r: call it "recover". 2006-09-13 12:59:49 -07:00
git-update-index.txt git-update-index(1): fix use of quoting in section title 2006-11-12 18:50:20 -08:00
git-update-ref.txt update-ref: -d flag and ref creation safety. 2006-09-27 02:01:42 -07:00
git-update-server-info.txt
git-upload-archive.txt Add git-upload-archive 2006-09-09 11:57:37 -07:00
git-upload-pack.txt
git-var.txt
git-verify-pack.txt
git-verify-tag.txt
git-whatchanged.txt
git-write-tree.txt
git.txt Create 'git gc' to perform common maintenance operations. 2006-12-27 01:53:03 -08:00
gitk.txt gitk(1): mention --all 2006-09-20 09:00:14 -07:00
glossary.txt Documentation: Define symref and update HEAD description 2006-11-18 14:04:51 -08:00
hooks.txt Fix trivial typos and inconsistencies in hooks documentation 2006-09-20 08:36:12 -07:00
howto-index.sh
install-doc-quick.sh Makefile: add quick-install-doc for installing pre-built manpages 2006-12-23 09:22:30 -08:00
install-webdoc.sh
Makefile Makefile: add quick-install-doc for installing pre-built manpages 2006-12-23 09:22:30 -08:00
merge-options.txt git-merge --squash 2006-06-24 01:11:19 -07:00
merge-strategies.txt
pretty-formats.txt Move --pretty options into Documentation/pretty-formats.txt 2006-11-22 16:06:32 -08:00
pull-fetch-param.txt
repository-layout.txt Documentation: Correct alternates documentation, document http-alternates 2006-11-18 16:29:46 -08:00
sort_glossary.pl
SubmittingPatches Teach SubmittingPatches about git-commit -s 2006-11-21 11:40:18 -08:00
tutorial-2.txt Align section headers of 'git status' to new 'git add'. 2006-12-15 22:31:01 -08:00
tutorial.txt Provide more meaningful output from 'git init-db'. 2006-12-15 22:31:00 -08:00
urls.txt Documentation for the [remote] config 2006-10-23 13:19:49 -07:00