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 Don't include ../README in git.txt - make a local copy 2006-01-24 23:16:31 -08:00
asciidoc.conf escape tilde in Documentation/git-rev-parse.txt 2006-10-03 01:04:19 -07:00
build-docdep.perl Clean build annoyance. 2005-11-08 08:58:52 -08:00
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 Fix recent documentation format breakage. 2005-10-29 00:50:42 -07:00
everyday.txt everyday: replace a few 'prune' and 'repack' with 'gc' 2006-12-27 02:00:30 -08:00
fetch-options.txt git-fetch --upload-pack: disambiguate. 2006-01-26 18:11:06 -08:00
git-add.txt git-add -f: allow adding otherwise ignored files. 2006-12-25 17:46:38 -08:00
git-am.txt war on whitespaces: documentation. 2006-03-02 00:52:59 -08:00
git-annotate.txt Add git-annotate(1) and git-blame(1) 2006-04-18 12:06:55 -07:00
git-apply.txt Document --numstat in git-apply and git-diff 2006-12-26 00:15:26 -08:00
git-applymbox.txt Brief documentation for the mysterious git-am script 2005-10-20 22:32:07 -07:00
git-applypatch.txt Remove trailing dot after short description 2006-03-09 11:44:11 -08:00
git-archimport.txt git/Documentation: fix SYNOPSIS style bugs 2006-03-05 17:02:02 -08:00
git-archive.txt git-archive: update documentation 2006-09-25 21:17:43 -07:00
git-bisect.txt Documentation: talk about pathspec in bisect. 2005-12-05 00:15:24 -08:00
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 cat-file: document -p option 2006-05-24 22:29:23 -07:00
git-check-ref-format.txt Some doc typo fixes 2006-06-07 11:49:35 -07:00
git-checkout-index.txt Fix up docs where "--" isn't displayed correctly. 2006-05-05 14:21:52 -07:00
git-checkout.txt Merge branch 'master' into sp/reflog 2006-05-24 16:49:24 -07:00
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 Teach git-clean optional <paths>... parameters. 2006-05-08 16:40:45 -07:00
git-clone.txt git-clone: lose the traditional 'no-separate-remote' layout 2006-12-16 13:01:41 -08:00
git-commit-tree.txt trivial: clarify, what are the config's user.name and user.email about 2006-01-05 17:23:21 -08:00
git-commit.txt make commit message a little more consistent and conforting 2006-12-15 22:29:54 -08:00
git-convert-objects.txt Convert usage of GIT and Git into git 2005-10-10 16:01:31 -07:00
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-cvsserver asciidoc formatting tweaks 2006-06-07 16:32:50 -07:00
git-daemon.txt Documentation: add git in /etc/services. 2006-10-27 02:10:52 -07:00
git-describe.txt Some doc typo fixes 2006-06-07 11:49:35 -07:00
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 Remove trailing dot after short description 2006-03-09 11:44:11 -08:00
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 Remove trailing dot after short description 2006-03-09 11:44:11 -08:00
git-fmt-merge-msg.txt Documentation for git-fmt-merge-msg 2005-11-01 14:45:49 -08:00
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 Documentation: Spelling fixes 2006-06-03 23:54:55 -07:00
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 Remove trailing dot after short description 2006-03-09 11:44:11 -08:00
git-grep.txt grep --all-match 2006-09-27 23:59:09 -07:00
git-hash-object.txt Remove trailing dot after short description 2006-03-09 11:44:11 -08:00
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 Several trivial documentation touch ups. 2006-05-05 14:21:18 -07:00
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 Remove trailing dot after short description 2006-03-09 11:44:11 -08:00
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 Documentation: git-ls-tree (typofix) 2006-06-07 16:29:36 -07:00
git-mailinfo.txt Remove trailing dot after short description 2006-03-09 11:44:11 -08:00
git-mailsplit.txt Assorted typo fixes 2006-07-09 02:42:41 -07:00
git-merge-base.txt Update the documentation for git-merge-base 2006-05-15 23:19:46 -07:00
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 Remove the version tags from the manpages 2005-10-10 14:49:52 -07:00
git-merge-tree.txt Documentation: add a couple of missing docs. 2006-04-13 00:21:06 -07:00
git-merge.txt Use GIT_REFLOG_ACTION environment variable instead. 2006-12-28 01:05:15 -08:00
git-mktag.txt Remove the version tags from the manpages 2005-10-10 14:49:52 -07:00
git-mktree.txt Documentation: add a couple of missing docs. 2006-04-13 00:21:06 -07:00
git-mv.txt Remove trailing dot after short description 2006-03-09 11:44:11 -08:00
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 Documentation: Spelling fixes 2006-06-03 23:54:55 -07:00
git-peek-remote.txt Remove trailing dot after short description 2006-03-09 11:44:11 -08:00
git-prune-packed.txt cosmetics: change from 'See-Also' to 'See Also' 2006-03-05 00:57:37 -08:00
git-prune.txt Fix up docs where "--" isn't displayed correctly. 2006-05-05 14:21:52 -07:00
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 Implement a --dry-run option to git-quiltimport 2006-05-18 22:55:57 -07:00
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 Remove trailing dot after short description 2006-03-09 11:44:11 -08:00
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 Remove trailing dot after short description 2006-03-09 11:44:11 -08:00
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 The synopsis of the manpages should use the hyphenated version 2005-10-10 16:01:32 -07:00
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 Remove trailing dot after short description 2006-03-09 11:44:11 -08:00
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 Documentation: Spelling fixes 2006-06-03 23:54:55 -07:00
git-shell.txt git/Documentation: fix SYNOPSIS style bugs 2006-03-05 17:02:02 -08:00
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 Convert usage of GIT and Git into git 2005-10-10 16:01:31 -07:00
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 Remove the version tags from the manpages 2005-10-10 14:49:52 -07:00
git-ssh-upload.txt Remove the version tags from the manpages 2005-10-10 14:49:52 -07:00
git-status.txt Documentation: git-status takes the same options as git-commit 2006-08-08 21:55:05 -07:00
git-stripspace.txt Remove trailing dot after short description 2006-03-09 11:44:11 -08:00
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 Remove the version tags from the manpages 2005-10-10 14:49:52 -07:00
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 Documentation: HTTP needs update-server-info. 2005-12-17 11:39:39 -08:00
git-upload-archive.txt Add git-upload-archive 2006-09-09 11:57:37 -07:00
git-upload-pack.txt Retire git-clone-pack 2006-06-21 02:34:14 -07:00
git-var.txt Deprecate usage of git-var -l for getting config vars list 2006-04-24 22:29:36 -07:00
git-verify-pack.txt Fix up docs where "--" isn't displayed correctly. 2006-05-05 14:21:52 -07:00
git-verify-tag.txt Remove trailing dot after short description 2006-03-09 11:44:11 -08:00
git-whatchanged.txt Fix up docs where "--" isn't displayed correctly. 2006-05-05 14:21:52 -07:00
git-write-tree.txt write-tree: --prefix=<path> 2006-05-01 22:29:16 -07:00
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 Documentation/Makefile: create tarballs for the man pages and html files 2006-05-18 20:15:45 -07:00
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 Documentation: recursive is the default strategy these days. 2005-12-08 14:04:33 -08:00
pretty-formats.txt Move --pretty options into Documentation/pretty-formats.txt 2006-11-22 16:06:32 -08:00
pull-fetch-param.txt Docs: move git url and remotes text to separate sections 2006-02-06 21:14:56 -08:00
repository-layout.txt Documentation: Correct alternates documentation, document http-alternates 2006-11-18 16:29:46 -08:00
sort_glossary.pl Added definitions for a few words: 2006-05-03 22:31:50 -07:00
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