author | Junio C Hamano <gitster@pobox.com> | |
Sun, 9 Dec 2007 09:23:48 +0000 (01:23 -0800) | ||
committer | Junio C Hamano <gitster@pobox.com> | |
Sun, 9 Dec 2007 09:23:48 +0000 (01:23 -0800) |
* jc/spht:
Use gitattributes to define per-path whitespace rule
core.whitespace: documentation updates.
builtin-apply: teach whitespace_rules
builtin-apply: rename "whitespace" variables and fix styles
core.whitespace: add test for diff whitespace error highlighting
git-diff: complain about >=8 consecutive spaces in initial indent
War on whitespace: first, a bit of retreat.
Conflicts:
cache.h
config.c
diff.c
Use gitattributes to define per-path whitespace rule
core.whitespace: documentation updates.
builtin-apply: teach whitespace_rules
builtin-apply: rename "whitespace" variables and fix styles
core.whitespace: add test for diff whitespace error highlighting
git-diff: complain about >=8 consecutive spaces in initial indent
War on whitespace: first, a bit of retreat.
Conflicts:
cache.h
config.c
diff.c
1 | 2 | |||
---|---|---|---|---|
Documentation/config.txt | patch | | diff1 | | diff2 | | blob | history |
Documentation/gitattributes.txt | patch | | diff1 | | diff2 | | blob | history |
Makefile | patch | | diff1 | | diff2 | | blob | history |
builtin-apply.c | patch | | diff1 | | diff2 | | blob | history |
cache.h | patch | | diff1 | | diff2 | | blob | history |
config.c | patch | | diff1 | | diff2 | | blob | history |
diff.c | patch | | diff1 | | diff2 | | blob | history |
environment.c | patch | | diff1 | | diff2 | | blob | history |
diff --cc Documentation/config.txt
index 79d51f26ccfa69a3785e6bebcbdce9b320d96e6d,0e711374dd99e5be07e17bae1b37c81e9062fd66..fabe7f859f32aa53ae86244f014e58bd3aa5ee3d
+++ b/Documentation/config.txt
which part of the patch to use the specified color, and is one
of `plain` (context text), `meta` (metainformation), `frag`
(hunk header), `old` (removed lines), `new` (added lines),
- `commit` (commit headers), or `whitespace` (highlighting dubious
- whitespace). The values of these variables may be specified as
+ `commit` (commit headers), or `whitespace` (highlighting
+ whitespace errors). The values of these variables may be specified as
in color.branch.<slot>.
+color.interactive::
+ When set to `always`, always use colors in `git add --interactive`.
+ When false (or `never`), never. When set to `true` or `auto`, use
+ colors only when the output is to the terminal. Defaults to false.
+
+color.interactive.<slot>::
+ Use customized color for `git add --interactive`
+ output. `<slot>` may be `prompt`, `header`, or `help`, for
+ three distinct types of normal output from interactive
+ programs. The values of these variables may be specified as
+ in color.branch.<slot>.
+
color.pager::
A boolean to enable/disable colored output when the pager is in
use (default is true).
diff --cc Documentation/gitattributes.txt
Simple merge
diff --cc Makefile
Simple merge
diff --cc builtin-apply.c
Simple merge
diff --cc cache.h
index c6142e9b7a8effbe31b5dcca3035d32138de84cf,9cc6268d4531f17703268f49057e4c9f284f0331..1bcb3df7a20b7eb90c15807b92ae0e016266d5fd
+++ b/cache.h
/* match-trees.c */
void shift_tree(const unsigned char *, const unsigned char *, unsigned char *, int);
+ /*
+ * whitespace rules.
+ * used by both diff and apply
+ */
+ #define WS_TRAILING_SPACE 01
+ #define WS_SPACE_BEFORE_TAB 02
+ #define WS_INDENT_WITH_NON_TAB 04
+ #define WS_DEFAULT_RULE (WS_TRAILING_SPACE|WS_SPACE_BEFORE_TAB)
+ extern unsigned whitespace_rule_cfg;
+ extern unsigned whitespace_rule(const char *);
+ extern unsigned parse_whitespace_rule(const char *);
+
+/* ls-files */
+int pathspec_match(const char **spec, char *matched, const char *filename, int skiplen);
+int report_path_error(const char *ps_matched, const char **pathspec, int prefix_offset);
+void overlay_tree_on_cache(const char *tree_name, const char *prefix);
+
#endif /* CACHE_H */
diff --cc config.c
index 15b3d07349b246d3a46721c5d84c65a2093d9ad3,2500e0d59a6b772966e07c8b9ad15f36cc8000d4..49d2b427e52008e612b534f0c567e9fadaeab6e3
+++ b/config.c
return 0;
}
+ if (!strcmp(var, "core.excludesfile")) {
+ if (!value)
+ die("core.excludesfile without value");
+ excludes_file = xstrdup(value);
+ return 0;
+ }
+
+ if (!strcmp(var, "core.whitespace")) {
+ whitespace_rule_cfg = parse_whitespace_rule(value);
+ return 0;
+ }
+
/* Add other config variables here and to Documentation/config.txt. */
return 0;
}
diff --cc diff.c
index be6cf687a4421acdc127df73aafef4aa9cf4daac,c3a1942bbb7da298cfbe2cb23c97fe361c9400ae..f780e3e8e67f4b1e07ef1d70ab3b9f101ff6b868
+++ b/diff.c
memset(&xecfg, 0, sizeof(xecfg));
memset(&ecbdata, 0, sizeof(ecbdata));
ecbdata.label_path = lbl;
- ecbdata.color_diff = o->color_diff;
+ ecbdata.color_diff = DIFF_OPT_TST(o, COLOR_DIFF);
ecbdata.found_changesp = &o->found_changes;
+ ecbdata.ws_rule = whitespace_rule(name_b ? name_b : name_a);
xpp.flags = XDF_NEED_MINIMAL | o->xdl_opts;
xecfg.ctxlen = o->context;
xecfg.flags = XDL_EMIT_FUNCNAMES;
data.xm.consume = checkdiff_consume;
data.filename = name_b ? name_b : name_a;
data.lineno = 0;
- data.color_diff = o->color_diff;
+ data.color_diff = DIFF_OPT_TST(o, COLOR_DIFF);
+ data.ws_rule = whitespace_rule(data.filename);
if (fill_mmfile(&mf1, one) < 0 || fill_mmfile(&mf2, two) < 0)
die("unable to read files to diff");
diff --cc environment.c
index 1dab72ec1525ca6dd15ca20666cd91506b85890c,2fbbc8e430cb6cd331f6835e07ede7c1e7d2a45a..f3e3d4138d463520dbe6d709dfbe0803b619456d
--- 1/environment.c
--- 2/environment.c
+++ b/environment.c
int pager_in_use;
int pager_use_color = 1;
char *editor_program;
+char *excludes_file;
int auto_crlf = 0; /* 1: both ways, -1: only when adding git objects */
+ unsigned whitespace_rule_cfg = WS_DEFAULT_RULE;
/* This is set by setup_git_dir_gently() and/or git_default_config() */
char *git_work_tree_cfg;