git-commit-vandalism/Documentation
Junio C Hamano 6546b5931e revision traversal: show full history with merge simplification
The --full-history traversal keeps all merges in addition to non-merge
commits that touch paths in the given pathspec.  This is useful to view
both sides of a merge in a topology like this:

        A---M---o
       /   /
   ---O---B

even when A and B makes identical change to the given paths.  The revision
traversal without --full-history aims to come up with the simplest history
to explain the final state of the tree, and one of the side branches can
be pruned away.

The behaviour to keep all merges however is inconvenient if neither A nor
B touches the paths we are interested in.  --full-history reduces the
topology to:

   ---O---M---o

in such a case, without removing M.

This adds a post processing phase on top of --full-history traversal to
remove needless merges from the resulting history.

The idea is to compute, for each commit in the "full history" result set,
the commit that should replace it in the simplified history.  The commit
to replace it in the final history is determined as follows:

 * In any case, we first figure out the replacement commits of parents of
   the commit we are looking at.  The commit we are looking at is
   rewritten as if the replacement commits of its original parents are its
   parents.  While doing so, we reduce the redundant parents from the
   rewritten parent list by not just removing the identical ones, but also
   removing a parent that is an ancestor of another parent.

 * After the above parent simplification, if the commit is a root commit,
   an UNINTERESTING commit, a merge commit, or modifies the paths we are
   interested in, then the replacement commit of the commit is itself.  In
   other words, such a commit is not dropped from the final result.

The first point above essentially means that the history is rewritten in
the bottom up direction.  We can rewrite the parent list of a commit only
after we know how all of its parents are rewritten.  This means that the
processing needs to happen on the full history (i.e. after limit_list()).

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-08-02 00:33:15 -07:00
..
howto Update my e-mail address 2008-08-01 23:21:44 -07:00
technical Fix two leftovers from path_list->string_list 2008-07-22 15:28:22 -07:00
.gitattributes Define the project whitespace policy 2008-02-11 13:23:15 -08:00
.gitignore doc: adding gitman.info and *.texi to .gitignore 2008-06-12 14:28:53 -07:00
asciidoc.conf pack.indexversion config option now defaults to 2 2008-06-25 21:30:55 -07:00
blame-options.txt Docs: Use "-l::\n--long\n" format in OPTIONS sections 2008-06-08 13:46:38 -07:00
build-docdep.perl
callouts.xsl
cat-texi.perl Documentation: exclude @pxref{[REMOTES]} from texinfo intermediate output 2008-06-12 14:21:05 -07:00
cmd-list.perl Documentation: rename gitlink macro to linkgit 2008-01-06 18:41:44 -08:00
CodingGuidelines Rename path_list to string_list 2008-07-21 19:11:50 -07:00
config.txt Documentation: fix diff.external example 2008-08-01 22:45:27 -07:00
diff-format.txt git-diff --numstat -z: make it machine readable 2007-12-12 10:59:22 -08:00
diff-generate-patch.txt git-diff(1): "--c" -> "--cc" typo fix 2008-08-01 23:21:23 -07:00
diff-options.txt Documentation: fix links to tutorials and other new manual pages 2008-07-01 17:20:09 -07:00
docbook-xsl.css
docbook.xsl
everyday.txt git-gc --prune is deprecated 2008-04-22 21:53:37 -07:00
fetch-options.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
fix-texi.perl
git-add.txt Make git-add -i accept ranges like 7- 2008-08-01 23:26:40 -07:00
git-am.txt Update my e-mail address 2008-08-01 23:21:44 -07:00
git-annotate.txt Documentation formatting and cleanup 2008-07-01 17:20:16 -07:00
git-apply.txt Merge branch 'js/apply-root' 2008-07-09 16:58:21 -07:00
git-archimport.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
git-archive.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
git-bisect.txt manpages: italicize gitk's name (where it was in teletype font) 2008-07-05 11:24:40 -07:00
git-blame.txt Update my e-mail address 2008-08-01 23:21:44 -07:00
git-branch.txt Update my e-mail address 2008-08-01 23:21:44 -07:00
git-bundle.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
git-cat-file.txt Documentation: be consistent about "git-" versus "git " 2008-07-01 17:20:15 -07:00
git-check-attr.txt Update my e-mail address 2008-08-01 23:21:44 -07:00
git-check-ref-format.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
git-checkout-index.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
git-checkout.txt checkout: mention '--' in the docs 2008-07-24 23:29:38 -07:00
git-cherry-pick.txt Update my e-mail address 2008-08-01 23:21:44 -07:00
git-cherry.txt Update my e-mail address 2008-08-01 23:21:44 -07:00
git-citool.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
git-clean.txt Make the DESCRIPTION match <x>... items in the SYNOPSIS 2008-07-30 21:42:55 -07:00
git-clone.txt Remove references to git-fetch-pack from "git clone" documentation. 2008-07-25 17:10:32 -07:00
git-commit-tree.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
git-commit.txt Update my e-mail address 2008-08-01 23:21:44 -07:00
git-config.txt Documentation: fix diff.external example 2008-08-01 22:45:27 -07:00
git-count-objects.txt Update my e-mail address 2008-08-01 23:21:44 -07:00
git-cvsexportcommit.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
git-cvsimport.txt Merge branch 'qq/maint' 2008-07-05 18:33:16 -07:00
git-cvsserver.txt Merge branch 'qq/maint' 2008-07-05 18:33:16 -07:00
git-daemon.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
git-describe.txt Update my e-mail address 2008-08-01 23:21:44 -07:00
git-diff-files.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
git-diff-index.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
git-diff-tree.txt Documentation: clarify diff --cc 2008-08-01 23:00:42 -07:00
git-diff.txt Documentation: be consistent about "git-" versus "git " 2008-07-01 17:20:15 -07:00
git-fast-export.txt Support copy and rename detection in fast-export. 2008-07-29 23:57:51 -07:00
git-fast-import.txt Support gitlinks in fast-import. 2008-07-19 11:25:51 -07:00
git-fetch-pack.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
git-fetch.txt Update my e-mail address 2008-08-01 23:21:44 -07:00
git-filter-branch.txt Make the DESCRIPTION match <x>... items in the SYNOPSIS 2008-07-30 21:42:55 -07:00
git-fmt-merge-msg.txt Update my e-mail address 2008-08-01 23:21:44 -07:00
git-for-each-ref.txt Make the DESCRIPTION match <x>... items in the SYNOPSIS 2008-07-30 21:42:55 -07:00
git-format-patch.txt Update my e-mail address 2008-08-01 23:21:44 -07:00
git-fsck-objects.txt Documentation: be consistent about "git-" versus "git " 2008-07-01 17:20:15 -07:00
git-fsck.txt manpages: italicize nongit command names (if they are in teletype font) 2008-07-05 11:24:40 -07:00
git-gc.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
git-get-tar-commit-id.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
git-grep.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
git-gui.txt manpages: use teletype font for sample command lines 2008-07-05 11:24:40 -07:00
git-hash-object.txt Update my e-mail address 2008-08-01 23:21:44 -07:00
git-help.txt manpages: use teletype font for sample command lines 2008-07-05 11:24:40 -07:00
git-http-fetch.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
git-http-push.txt Documentation: be consistent about "git-" versus "git " 2008-07-01 17:20:15 -07:00
git-imap-send.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
git-index-pack.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
git-init-db.txt Documentation: be consistent about "git-" versus "git " 2008-07-01 17:20:15 -07:00
git-init.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
git-instaweb.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
git-log.txt Make the DESCRIPTION match <x>... items in the SYNOPSIS 2008-07-30 21:42:55 -07:00
git-lost-found.txt Documentation: be consistent about "git-" versus "git " 2008-07-01 17:20:15 -07:00
git-ls-files.txt Documentation: clarify what is shown in "git-ls-files -s" output 2008-07-28 23:02:11 -07:00
git-ls-remote.txt Update my e-mail address 2008-08-01 23:21:44 -07:00
git-ls-tree.txt Update my e-mail address 2008-08-01 23:21:44 -07:00
git-mailinfo.txt Update my e-mail address 2008-08-01 23:21:44 -07:00
git-mailsplit.txt Update my e-mail address 2008-08-01 23:21:44 -07:00
git-merge-base.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
git-merge-file.txt manpages: italicize nongit command names (if they are in teletype font) 2008-07-05 11:24:40 -07:00
git-merge-index.txt manpages: italicize nongit command names (if they are in teletype font) 2008-07-05 11:24:40 -07:00
git-merge-one-file.txt Update my e-mail address 2008-08-01 23:21:44 -07:00
git-merge-tree.txt Documentation: be consistent about "git-" versus "git " 2008-07-01 17:20:15 -07:00
git-merge.txt Update my e-mail address 2008-08-01 23:21:44 -07:00
git-mergetool.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
git-mktag.txt Documentation: be consistent about "git-" versus "git " 2008-07-01 17:20:15 -07:00
git-mktree.txt Update my e-mail address 2008-08-01 23:21:44 -07:00
git-mv.txt Documentation: be consistent about "git-" versus "git " 2008-07-01 17:20:15 -07:00
git-name-rev.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
git-pack-objects.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
git-pack-redundant.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
git-pack-refs.txt Documentation: be consistent about "git-" versus "git " 2008-07-01 17:20:15 -07:00
git-parse-remote.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
git-patch-id.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
git-peek-remote.txt Update my e-mail address 2008-08-01 23:21:44 -07:00
git-prune-packed.txt Documentation: be consistent about "git-" versus "git " 2008-07-01 17:20:15 -07:00
git-prune.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
git-pull.txt Update my e-mail address 2008-08-01 23:21:44 -07:00
git-push.txt Update my e-mail address 2008-08-01 23:21:44 -07:00
git-quiltimport.txt Documentation: be consistent about "git-" versus "git " 2008-07-01 17:20:15 -07:00
git-read-tree.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
git-rebase.txt Update my e-mail address 2008-08-01 23:21:44 -07:00
git-receive-pack.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
git-reflog.txt Update my e-mail address 2008-08-01 23:21:44 -07:00
git-relink.txt Documentation: be consistent about "git-" versus "git " 2008-07-01 17:20:15 -07:00
git-remote.txt manpages: italicize command names in synopses 2008-07-05 11:24:39 -07:00
git-repack.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
git-repo-config.txt Documentation: be consistent about "git-" versus "git " 2008-07-01 17:20:15 -07:00
git-request-pull.txt Update my e-mail address 2008-08-01 23:21:44 -07:00
git-rerere.txt Update my e-mail address 2008-08-01 23:21:44 -07:00
git-reset.txt Update my e-mail address 2008-08-01 23:21:44 -07:00
git-rev-list.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
git-rev-parse.txt Update my e-mail address 2008-08-01 23:21:44 -07:00
git-revert.txt Update my e-mail address 2008-08-01 23:21:44 -07:00
git-rm.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
git-send-email.txt Replace uses of "git-var" with "git var" 2008-07-30 11:42:01 -07:00
git-send-pack.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
git-sh-setup.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
git-shell.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
git-shortlog.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
git-show-branch.txt Update my e-mail address 2008-08-01 23:21:44 -07:00
git-show-index.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
git-show-ref.txt Make the DESCRIPTION match <x>... items in the SYNOPSIS 2008-07-30 21:42:55 -07:00
git-show.txt Update my e-mail address 2008-08-01 23:21:44 -07:00
git-stash.txt Merge branch 'am/stash-branch' 2008-07-13 15:16:09 -07:00
git-status.txt Update my e-mail address 2008-08-01 23:21:44 -07:00
git-stripspace.txt Documentation: be consistent about "git-" versus "git " 2008-07-01 17:20:15 -07:00
git-submodule.txt Make the DESCRIPTION match <x>... items in the SYNOPSIS 2008-07-30 21:42:55 -07:00
git-svn.txt Documentation: Remove mentions of git-svnimport. 2008-07-29 23:18:04 -07:00
git-symbolic-ref.txt Update my e-mail address 2008-08-01 23:21:44 -07:00
git-tag.txt Update my e-mail address 2008-08-01 23:21:44 -07:00
git-tar-tree.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
git-tools.txt
git-unpack-file.txt Documentation: be consistent about "git-" versus "git " 2008-07-01 17:20:15 -07:00
git-unpack-objects.txt Documentation formatting and cleanup 2008-07-01 17:20:16 -07:00
git-update-index.txt Make use of stat.ctime configurable 2008-07-28 23:26:25 -07:00
git-update-ref.txt Documentation: be consistent about "git-" versus "git " 2008-07-01 17:20:15 -07:00
git-update-server-info.txt Update my e-mail address 2008-08-01 23:21:44 -07:00
git-upload-archive.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
git-upload-pack.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
git-var.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
git-verify-pack.txt Update my e-mail address 2008-08-01 23:21:44 -07:00
git-verify-tag.txt Make the DESCRIPTION match <x>... items in the SYNOPSIS 2008-07-30 21:42:55 -07:00
git-web--browse.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
git-whatchanged.txt Update my e-mail address 2008-08-01 23:21:44 -07:00
git-write-tree.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
git.txt Getting closer to 1.6.0-rc0 2008-07-19 15:52:12 -07:00
gitattributes.txt Merge branch 'qq/maint' 2008-07-05 18:33:16 -07:00
gitcli.txt gitcli: Document meaning of --cached and --index 2008-07-01 17:29:38 -07:00
gitcore-tutorial.txt Documentation: fix broken "linkgit" links 2008-07-08 13:02:11 -07:00
gitcvs-migration.txt Merge branch 'qq/maint' 2008-07-05 18:33:16 -07:00
gitdiffcore.txt manpages: italicize nongit command names (if they are in teletype font) 2008-07-05 11:24:40 -07:00
gitglossary.txt Documentation: fix broken "linkgit" links 2008-07-08 13:02:11 -07:00
githooks.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
gitignore.txt Documentation: How to ignore local changes in tracked files 2008-07-19 11:17:43 -07:00
gitk.txt Make the DESCRIPTION match <x>... items in the SYNOPSIS 2008-07-30 21:42:55 -07:00
gitmodules.txt documentation: move git(7) to git(1) 2008-06-06 11:18:28 -07:00
gitrepository-layout.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
gittutorial-2.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
gittutorial.txt tutorial: clarify "pull" is "fetch + merge" 2008-07-14 23:35:31 -07:00
glossary-content.txt glossary: improve a few links 2008-06-01 22:26:37 -07:00
howto-index.sh
i18n.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
install-doc-quick.sh install-doc-quick - use git --exec-path to find git-sh-setup 2008-07-08 16:36:03 -07:00
install-webdoc.sh Start preparing the API documents. 2007-12-14 22:29:38 -08:00
Makefile documentation: move git(7) to git(1) 2008-06-06 11:18:28 -07:00
manpage-1.72.xsl Make man page building quiet when DOCBOOK_XSL_172 is defined 2008-03-15 00:05:18 -07:00
merge-config.txt add merge.renamelimit config option 2008-05-03 13:39:51 -07:00
merge-options.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
merge-strategies.txt Documentation/git-merge: document subtree strategy. 2008-03-19 01:43:02 -07:00
pretty-formats.txt Add pretty format %aN which gives the author name, respecting .mailmap 2008-07-11 21:16:37 -07:00
pretty-options.txt log/show/whatchanged: introduce format.pretty configuration 2008-03-05 12:06:09 -08:00
pull-fetch-param.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
RelNotes-1.5.0.1.txt
RelNotes-1.5.0.2.txt
RelNotes-1.5.0.3.txt
RelNotes-1.5.0.4.txt
RelNotes-1.5.0.5.txt
RelNotes-1.5.0.6.txt
RelNotes-1.5.0.7.txt
RelNotes-1.5.0.txt
RelNotes-1.5.1.1.txt
RelNotes-1.5.1.2.txt
RelNotes-1.5.1.3.txt
RelNotes-1.5.1.4.txt
RelNotes-1.5.1.5.txt
RelNotes-1.5.1.6.txt
RelNotes-1.5.1.txt
RelNotes-1.5.2.1.txt
RelNotes-1.5.2.2.txt
RelNotes-1.5.2.3.txt
RelNotes-1.5.2.4.txt
RelNotes-1.5.2.5.txt
RelNotes-1.5.2.txt
RelNotes-1.5.3.1.txt
RelNotes-1.5.3.2.txt
RelNotes-1.5.3.3.txt fix doc typos 2008-01-29 22:00:34 -08:00
RelNotes-1.5.3.4.txt
RelNotes-1.5.3.5.txt
RelNotes-1.5.3.6.txt GIT 1.5.3.6 2007-11-18 14:00:38 -08:00
RelNotes-1.5.3.7.txt GIT 1.5.3.7 2007-12-01 11:20:00 -08:00
RelNotes-1.5.3.8.txt GIT 1.5.3.8 2008-01-07 22:41:43 -08:00
RelNotes-1.5.3.txt
RelNotes-1.5.4.1.txt GIT 1.5.4.2 2008-02-17 00:20:38 -08:00
RelNotes-1.5.4.2.txt GIT 1.5.4.2 2008-02-17 00:20:38 -08:00
RelNotes-1.5.4.3.txt GIT 1.5.4.3 2008-02-23 11:31:04 -08:00
RelNotes-1.5.4.4.txt GIT 1.5.4.4 2008-03-08 19:43:21 -08:00
RelNotes-1.5.4.5.txt GIT 1.5.4.5 2008-03-27 20:36:35 -07:00
RelNotes-1.5.4.6.txt GIT 1.5.4.6 2008-06-26 17:11:21 -07:00
RelNotes-1.5.4.txt GIT 1.5.4 2008-02-01 19:10:10 -08:00
RelNotes-1.5.5.1.txt GIT 1.5.5.1 2008-04-20 11:36:53 -07:00
RelNotes-1.5.5.2.txt Release Notes for 1.5.5.2 2008-05-25 21:11:24 -07:00
RelNotes-1.5.5.3.txt GIT 1.5.5.3 2008-05-27 22:32:47 -07:00
RelNotes-1.5.5.4.txt GIT 1.5.5.4 2008-06-07 11:45:48 -07:00
RelNotes-1.5.5.5.txt GIT 1.5.5.5 2008-06-26 17:59:51 -07:00
RelNotes-1.5.5.txt GIT 1.5.5 2008-04-07 21:57:43 -07:00
RelNotes-1.5.6.1.txt GIT 1.5.6.1 2008-06-25 17:13:48 -07:00
RelNotes-1.5.6.2.txt GIT 1.5.6.2 2008-07-04 01:38:41 -07:00
RelNotes-1.5.6.3.txt GIT 1.5.6.3 2008-07-13 15:23:43 -07:00
RelNotes-1.5.6.4.txt GIT 1.5.6.4 2008-07-19 10:58:01 -07:00
RelNotes-1.5.6.5.txt Start 1.5.6.5 RelNotes to describe accumulated fixes 2008-08-01 23:54:01 -07:00
RelNotes-1.5.6.txt GIT 1.5.6 2008-06-18 13:09:43 -07:00
RelNotes-1.6.0.txt GIT 1.6.0-rc1 2008-07-27 15:07:56 -07:00
rev-list-options.txt revision traversal: show full history with merge simplification 2008-08-02 00:33:15 -07:00
SubmittingPatches Rename .git/rebase to .git/rebase-apply 2008-07-21 18:51:47 -07:00
urls-remotes.txt manpages: italicize git command names (which were in teletype font) 2008-07-05 11:24:40 -07:00
urls.txt Add support for url aliases in config files 2008-02-24 20:05:29 -08:00
user-manual.conf Documentation: rename gitlink macro to linkgit 2008-01-06 18:41:44 -08:00
user-manual.txt documentation: user-manual: update "using-bisect" section 2008-07-30 21:42:20 -07:00