git/Documentation
René Scharfe 14937c2c06 diff: add option to show whole functions as context
Add the option -W/--function-context to git diff.  It is similar to
the same option of git grep and expands the context of change hunks
so that the whole surrounding function is shown.  This "natural"
context can allow changes to be understood better.

Note: GNU patch doesn't like diffs generated with the new option;
it seems to expect context lines to be the same before and after
changes.  git apply doesn't complain.

This implementation has the same shortcoming as the one in grep,
namely that there is no way to explicitly find the end of a
function.  That means that a few lines of extra context are shown,
right up to the next recognized function begins.  It's already
useful in its current form, though.

The function get_func_line() in xdiff/xemit.c is extended to work
forward as well as backward to find post-context as well as
pre-context.  It returns the position of the first found matching
line.  The func_line parameter is made optional, as we don't need
it for -W.

The enhanced function is then used in xdl_emit_diff() to extend
the context as needed.  If the added context overlaps with the
next change, it is merged into the current hunk.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-10-10 12:05:07 -07:00
..
RelNotes Git 1.7.7 2011-09-30 14:20:57 -07:00
howto Minor update to how-to maintain git 2011-09-07 11:18:18 -07:00
pt_BR
technical Merge branch 'en/merge-recursive-2' 2011-09-02 10:00:18 -07:00
.gitattributes
.gitignore Documentation: ignore *.pdf files 2011-08-08 09:30:12 -07:00
CodingGuidelines CodingGuidelines: downcase placeholders in usage messages 2011-02-15 11:53:00 -08:00
Makefile Merge branch 'js/ref-namespaces' 2011-08-17 17:35:38 -07:00
SubmittingPatches SubmittingPathces: remove Cogito reference 2011-09-11 20:53:00 -07:00
asciidoc.conf Merge branch 'jc/maint-doc-em-dash' 2010-09-03 09:43:42 -07:00
blame-options.txt blame: add --line-porcelain output format 2011-05-09 15:27:50 -07:00
build-docdep.perl
cat-texi.perl
cmd-list.perl
config.txt Merge branch 'jn/doc-dashdash' into maint 2011-09-11 21:52:18 -07:00
date-formats.txt
diff-config.txt New --dirstat=lines mode, doing dirstat analysis based on diffstat 2011-04-29 11:22:55 -07:00
diff-format.txt
diff-generate-patch.txt diff format documentation: clarify --cc and -c 2011-03-08 14:44:07 -08:00
diff-options.txt diff: add option to show whole functions as context 2011-10-10 12:05:07 -07:00
docbook-xsl.css
docbook.xsl Documentation: set a !DOCTYPE for user manual 2010-08-20 10:53:56 -07:00
everyday.txt everyday.txt: change "tracking branch" to "remote-tracking branch" 2010-11-03 09:19:10 -07:00
fetch-options.txt fetch/pull: Don't recurse into a submodule when commits are already present 2011-03-09 13:10:35 -08:00
fix-texi.perl
git-add.txt Merge branch 'vh/config-interactive-singlekey-doc' into maint 2011-05-31 12:01:06 -07:00
git-am.txt am: Document new --exclude=<path> option 2011-08-09 12:05:24 -07:00
git-annotate.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-apply.txt doc: drop author/documentation sections from most pages 2011-03-11 10:59:16 -05:00
git-archimport.txt doc: drop author/documentation sections from most pages 2011-03-11 10:59:16 -05:00
git-archive.txt docs: put listed example commands in backticks 2011-08-04 15:49:13 -07:00
git-bisect-lk2009.txt Documentation: remove stray backslashes from "Fighting regressions" article 2010-08-20 14:16:51 -07:00
git-bisect.txt bisect: add support for bisecting bare repositories 2011-08-09 10:26:18 -07:00
git-blame.txt blame: add --line-porcelain output format 2011-05-09 15:27:50 -07:00
git-branch.txt branch -v: honor core.abbrev 2011-07-01 11:22:09 -07:00
git-bundle.txt doc: drop author/documentation sections from most pages 2011-03-11 10:59:16 -05:00
git-cat-file.txt doc: drop author/documentation sections from most pages 2011-03-11 10:59:16 -05:00
git-check-attr.txt git-check-attr: Fix command-line handling to match docs 2011-08-04 15:53:20 -07:00
git-check-ref-format.txt check-ref-format doc: de-emphasize the implementation detail of a ref 2011-06-23 15:38:14 -07:00
git-checkout-index.txt doc: drop author/documentation sections from most pages 2011-03-11 10:59:16 -05:00
git-checkout.txt git-checkout.txt: better docs for '--patch' 2011-05-05 13:31:11 -07:00
git-cherry-pick.txt docs: put listed example commands in backticks 2011-08-04 15:49:13 -07:00
git-cherry.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-citool.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-clean.txt Documentation: clarify "git clean -e <pattern>" 2011-08-28 23:47:55 -07:00
git-clone.txt clone: accept config options on the command line 2011-06-22 11:25:21 -07:00
git-commit-tree.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-commit.txt Merge branch 'jn/maint-doc-dashdash' into jn/doc-dashdash 2011-06-29 09:25:51 -07:00
git-config.txt config: define and document exit codes 2011-05-17 21:01:17 -07:00
git-count-objects.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-cvsexportcommit.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-cvsimport.txt doc: drop author/documentation sections from most pages 2011-03-11 10:59:16 -05:00
git-cvsserver.txt docs: make sure literal "->" isn't converted to arrow 2011-05-26 22:15:38 -07:00
git-daemon.txt git-daemon.txt: specify --timeout in seconds 2011-08-28 13:44:10 -07:00
git-describe.txt doc: drop author/documentation sections from most pages 2011-03-11 10:59:16 -05:00
git-diff-files.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-diff-index.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-diff-tree.txt docs: fix some antique example output 2011-05-26 22:15:39 -07:00
git-diff.txt doc: drop author/documentation sections from most pages 2011-03-11 10:59:16 -05:00
git-difftool.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-fast-export.txt Merge branch 'sr/transport-helper-fix' 2011-08-01 15:00:14 -07:00
git-fast-import.txt Merge branch 'di/fast-import-ident' 2011-08-28 21:18:47 -07:00
git-fetch-pack.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-fetch.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-filter-branch.txt Documentation: git-filter-branch honors replacement refs 2011-07-21 12:54:55 -07:00
git-fmt-merge-msg.txt doc: drop author/documentation sections from most pages 2011-03-11 10:59:16 -05:00
git-for-each-ref.txt Add Author and Documentation sections to git-for-each-ref.txt 2011-03-09 12:22:15 -08:00
git-format-patch.txt Document negated forms of format-patch --to --cc --add-headers 2011-08-29 15:27:07 -07:00
git-fsck-objects.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-fsck.txt Documentation/git-fsck.txt: fix typo: unreadable -> unreachable 2011-05-16 16:35:08 -07:00
git-gc.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-get-tar-commit-id.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-grep.txt Merge branch 'rs/grep-function-context' 2011-08-11 11:03:09 -07:00
git-gui.txt docs: put listed example commands in backticks 2011-08-04 15:49:13 -07:00
git-hash-object.txt doc: drop author/documentation sections from most pages 2011-03-11 10:59:16 -05:00
git-help.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-http-backend.txt ref namespaces: documentation 2011-07-11 09:35:46 -07:00
git-http-fetch.txt Mark http-fetch without -a as deprecated 2011-08-23 21:36:20 -07:00
git-http-push.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-imap-send.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-index-pack.txt doc: drop author/documentation sections from most pages 2011-03-11 10:59:16 -05:00
git-init-db.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-init.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-instaweb.txt git-instaweb: Check that correct config file exists for (re)start 2011-06-27 09:11:41 +00:00
git-log.txt Merge branch 'maint' 2011-08-30 12:35:51 -07:00
git-lost-found.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-ls-files.txt doc: drop author/documentation sections from most pages 2011-03-11 10:59:16 -05:00
git-ls-remote.txt ls-remote: the --exit-code option reports "no matching refs" 2011-05-18 14:37:46 -07:00
git-ls-tree.txt doc: drop author/documentation sections from most pages 2011-03-11 10:59:16 -05:00
git-mailinfo.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-mailsplit.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-merge-base.txt Merge branch 'vr/merge-base-doc' into maint 2011-05-16 16:38:46 -07:00
git-merge-file.txt docs: put listed example commands in backticks 2011-08-04 15:49:13 -07:00
git-merge-index.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-merge-one-file.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-merge-tree.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-merge.txt Merge branch 'jc/merge-sans-branch' 2011-04-01 17:57:16 -07:00
git-mergetool--lib.txt Merge branch 'jn/doc-dashdash' into maint 2011-09-11 21:52:18 -07:00
git-mergetool.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-mktag.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-mktree.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-mv.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-name-rev.txt doc: drop author/documentation sections from most pages 2011-03-11 10:59:16 -05:00
git-notes.txt git-notes.txt: clarify -C vs. copy and -F 2011-08-25 13:16:46 -07:00
git-pack-objects.txt remove doubled words, e.g., s/to to/to/, and fix related typos 2011-04-13 11:59:11 -07:00
git-pack-redundant.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-pack-refs.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-parse-remote.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-patch-id.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-peek-remote.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-prune-packed.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-prune.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-pull.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-push.txt Merge branch 'fg/submodule-ff-check-before-push' 2011-09-02 13:07:58 -07:00
git-quiltimport.txt doc: drop author/documentation sections from most pages 2011-03-11 10:59:16 -05:00
git-read-tree.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-rebase.txt Merge branch 'mz/doc-rebase-abort' into maint 2011-08-16 11:41:28 -07:00
git-receive-pack.txt Sync with 1.7.6.2 2011-09-06 11:42:12 -07:00
git-reflog.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-relink.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-remote-ext.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-remote-fd.txt docs: put listed example commands in backticks 2011-08-04 15:49:13 -07:00
git-remote-helpers.txt (short) documentation for the testgit remote helper 2011-09-01 15:52:02 -07:00
git-remote-testgit.txt (short) documentation for the testgit remote helper 2011-09-01 15:52:02 -07:00
git-remote.txt git-remote.txt: avoid sounding as if loose refs are the only ones in the world 2011-06-23 09:15:28 -07:00
git-repack.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-replace.txt doc: drop author/documentation sections from most pages 2011-03-11 10:59:16 -05:00
git-repo-config.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-request-pull.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-rerere.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-reset.txt git-reset.txt: better docs for '--patch' 2011-05-05 13:31:22 -07:00
git-rev-list.txt show: --ignore-missing 2011-05-19 10:55:54 -07:00
git-rev-parse.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-revert.txt Merge branch 'jn/doc-dashdash' into maint 2011-09-11 21:52:18 -07:00
git-rm.txt docs: put listed example commands in backticks 2011-08-04 15:49:13 -07:00
git-send-email.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-send-pack.txt Revert "Merge branch 'cb/maint-quiet-push' into maint" 2011-09-06 11:10:41 -07:00
git-sh-i18n--envsubst.txt Documentation/i18n: quote double-dash for AsciiDoc 2011-06-29 14:38:51 -07:00
git-sh-i18n.txt Merge branch 'jn/doc-dashdash' into maint 2011-09-11 21:52:18 -07:00
git-sh-setup.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-shell.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-shortlog.txt doc: drop author/documentation sections from most pages 2011-03-11 10:59:16 -05:00
git-show-branch.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-show-index.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-show-ref.txt doc: drop author/documentation sections from most pages 2011-03-11 10:59:16 -05:00
git-show.txt docs: put listed example commands in backticks 2011-08-04 15:49:13 -07:00
git-stage.txt doc: add missing git footers 2011-03-11 10:59:16 -05:00
git-stash.txt stash: Add --include-untracked option to stash and remove all untracked files 2011-06-26 12:50:46 -07:00
git-status.txt Merge branch 'jk/maint-1.7.2-status-ignored' into maint 2011-09-11 21:51:10 -07:00
git-stripspace.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-submodule.txt Merge branch 'jn/doc-dashdash' into maint 2011-09-11 21:52:18 -07:00
git-svn.txt git-svn: teach git-svn to populate svn:mergeinfo 2011-09-13 08:12:13 +00:00
git-symbolic-ref.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-tag.txt tag: accept multiple patterns for --list 2011-06-20 13:00:54 -07:00
git-tar-tree.txt docs: put listed example commands in backticks 2011-08-04 15:49:13 -07:00
git-tools.txt
git-unpack-file.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-unpack-objects.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-update-index.txt doc: drop author/documentation sections from most pages 2011-03-11 10:59:16 -05:00
git-update-ref.txt Merge branch 'bw/log-all-ref-updates-doc' into maint 2011-08-16 11:41:28 -07:00
git-update-server-info.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-upload-archive.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-upload-pack.txt Merge branch 'js/ref-namespaces' 2011-08-17 17:35:38 -07:00
git-var.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-verify-pack.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-verify-tag.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-web--browse.txt Merge branch 'jn/doc-dashdash' into maint 2011-09-11 21:52:18 -07:00
git-whatchanged.txt docs: put listed example commands in backticks 2011-08-04 15:49:13 -07:00
git-write-tree.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git.txt Git 1.7.7 2011-09-30 14:20:57 -07:00
gitattributes.txt Merge branch 'mh/check-attr-relative' 2011-08-17 17:36:22 -07:00
gitcli.txt doc: drop author/documentation sections from most pages 2011-03-11 10:59:16 -05:00
gitcore-tutorial.txt Documentation: gitrevisions is in section 7 2010-10-13 19:10:55 -07:00
gitcvs-migration.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
gitdiffcore.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
gitglossary.txt
githooks.txt Documentation/githooks: post-rewrite-copy-notes never existed 2011-01-10 09:09:02 -08:00
gitignore.txt doc: drop author/documentation sections from most pages 2011-03-11 10:59:16 -05:00
gitk.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
gitmodules.txt Merge branch 'jl/submodule-fetch-on-demand' 2011-04-04 15:02:01 -07:00
gitnamespaces.txt Documentation/gitnamespaces.txt: cater to older asciidoc 2011-09-16 09:20:23 -07:00
gitrepository-layout.txt Documentation: Grammar correction, wording fixes and cleanup 2011-08-23 21:35:47 -07:00
gitrevisions.txt
gittutorial-2.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
gittutorial.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
gitworkflows.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
glossary-content.txt Merge branch 'nk/ref-doc' into maint 2011-08-01 14:44:24 -07:00
howto-index.sh
i18n.txt
install-doc-quick.sh
install-webdoc.sh install-webdoc: keep installed RelNotes-*.txt 2010-09-09 16:17:59 -07:00
mailmap.txt
manpage-1.72.xsl
manpage-base-url.xsl.in
manpage-base.xsl
manpage-bold-literal.xsl
manpage-normal.xsl
manpage-quote-apos.xsl
manpage-suppress-sp.xsl
merge-config.txt merge: introduce merge.ff configuration variable 2011-05-06 15:12:30 -07:00
merge-options.txt merge: enable progress reporting for rename detection 2011-02-21 10:24:08 -08:00
merge-strategies.txt Merge branch 'kb/merge-recursive-rename-threshold' 2010-10-26 21:54:04 -07:00
pretty-formats.txt
pretty-options.txt Add log.abbrevCommit config variable 2011-05-18 12:40:15 -07:00
pull-fetch-param.txt
rev-list-options.txt Merge branch 'jn/doc-dashdash' into maint 2011-09-11 21:52:18 -07:00
revisions.txt revisions.txt: language improvements 2011-04-04 16:43:57 -07:00
urls-remotes.txt
urls.txt
user-manual.conf
user-manual.txt user-manual: remote-tracking can be checked out, with detached HEAD 2010-11-03 09:20:48 -07:00