1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-11-17 14:34:49 +01:00
git/Documentation/technical
Junio C Hamano 6c374008b1 diff_opt: track whether flags have been set explicitly
The diff_opt infrastructure sets flags based on defaults and command
line options.  It is impossible to tell whether a flag has been set
as a default or on explicit request.  Update the structure so that
this detection is possible:

 * Add an extra "opt->touched_flags" that keeps track of all the
   fields that have been touched by DIFF_OPT_SET and DIFF_OPT_CLR.

 * You may continue setting the default values to the flags, like
   commands in the "log" family do in cmd_log_init_defaults(), but
   after you finished setting the defaults, you clear the
   touched_flags field;

 * And then you let the usual callchain call diff_opt_parse(),
   allowing the opt->flags be set or unset, while keeping track of
   which bits the user touched;

 * There is an optional callback "opt->set_default" that is called
   at the very beginning to let you inspect touched_flags and update
   opt->flags appropriately, before the remainder of the diffcore
   machinery is set up, taking the opt->flags value into account.

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-05-10 10:24:17 -07:00
..
.gitignore
api-allocation-growing.txt api-allocation-growing.txt: encourage better variable naming 2013-01-06 12:57:56 -08:00
api-argv-array.txt doc: various spelling fixes 2013-04-12 12:00:52 -07:00
api-builtin.txt Documentation: the name of the system is 'Git', not 'git' 2013-02-01 13:53:33 -08:00
api-config.txt Documentation: the name of the system is 'Git', not 'git' 2013-02-01 13:53:33 -08:00
api-credentials.txt doc: various spelling fixes 2013-04-12 12:00:52 -07:00
api-decorate.txt
api-diff.txt diff_opt: track whether flags have been set explicitly 2013-05-10 10:24:17 -07:00
api-directory-listing.txt Merge branch 'ta/doc-no-small-caps' 2013-02-05 16:13:32 -08:00
api-gitattributes.txt
api-grep.txt
api-hash.txt
api-history-graph.txt graph.c: infinite loop in git whatchanged --graph -m 2012-09-25 11:07:15 -07:00
api-in-core-index.txt
api-index-skel.txt Documentation: avoid poor-man's small caps GIT 2013-02-01 13:53:25 -08:00
api-index.sh
api-lockfile.txt
api-merge.txt
api-object-access.txt
api-parse-options.txt Documentation: the name of the system is 'Git', not 'git' 2013-02-01 13:53:33 -08:00
api-quote.txt
api-ref-iteration.txt doc: various spelling fixes 2013-04-12 12:00:52 -07:00
api-remote.txt Documentation: the name of the system is 'Git', not 'git' 2013-02-01 13:53:33 -08:00
api-revision-walking.txt
api-run-command.txt run-command: encode signal death as a positive integer 2013-01-06 11:09:18 -08:00
api-setup.txt
api-sha1-array.txt sha1-array.c: mark a private file-scope symbol as static 2012-09-15 22:58:21 -07:00
api-sigchain.txt
api-strbuf.txt Allow custom "comment char" 2013-01-16 12:48:22 -08:00
api-string-list.txt Merge branch 'mh/ceiling' into maint 2013-01-28 11:07:18 -08:00
api-tree-walking.txt
api-xdiff-interface.txt
index-format.txt Merge branch 'maint-1.8.1' into maint 2013-03-25 13:46:42 -07:00
pack-format.txt Merge branch 'maint-1.8.1' into maint 2013-04-12 11:48:38 -07:00
pack-heuristics.txt Documentation: the name of the system is 'Git', not 'git' 2013-02-01 13:53:33 -08:00
pack-protocol.txt Documentation/technical: convert plain text files to asciidoc 2012-10-16 16:09:09 -07:00
protocol-capabilities.txt
protocol-common.txt
racy-git.txt Documentation: the name of the system is 'Git', not 'git' 2013-02-01 13:53:33 -08:00
send-pack-pipeline.txt Change headline of technical/send-pack-pipeline.txt to not confuse its content with content from git-send-pack.txt 2012-10-16 16:09:09 -07:00
shallow.txt fetch: add --unshallow for turning shallow repo into complete one 2013-01-11 09:09:30 -08:00
trivial-merge.txt Documentation/technical: convert plain text files to asciidoc 2012-10-16 16:09:09 -07:00