{"thread":{"id":"4622","subject":"What's in git.git and announcing v1.4.1-rc1","startedAt":"2006-06-22T19:49:47Z","lastAt":"2006-06-24T19:44:50Z","messageCount":18,"participants":["Junio C Hamano","Paolo Ciarrocchi","Linus Torvalds","Petr Baudis","Jakub Narebski","Johannes Schindelin","Pádraig Brady"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"22298","messageId":"7v8xnpj7hg.fsf@assigned-by-dhcp.cox.net","threadId":"4622","inReplyTo":null,"subject":"What's in git.git and announcing v1.4.1-rc1","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2006-06-22T19:49:47Z","receivedAt":"2006-06-22T19:49:47Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"I've merged quite a bit of stuff and tagged the tip of \"master\"\nas GIT 1.4.1-rc1.\n\nAs promised, 1.4.X series will be managed slightly differently,\nand this is in preparation of the first installment of it.  The\nreleases will come from the \"master\" branch to contain both\nfixes and enhancements from now on.  Hotfix releases when\nnecessary would have 1.4.X.Y revision numbers, but I am hoping\nthat we do not have to do that very often.\n\nSince all the exciting and potentially risky developments are to\nhappen on the \"next\" branch and they are supposed to graduate to\n\"master\" branch after they are reasonably well cooked, this\nchange will help the end-users to stay reasonably current\nwithout hopefully not introducing unexpected problems.  The\nolder scheme left out all the enhancements if people followed\npackaged versions, and gave big surprises when upgrading from\nversion X.Y.Z to X.(Y+1).0 which was not so nice.\n\nNotable improvements since v1.4.0 are:\n\n - PPC SHA1 routine can grok more than half-gig of data (Paul\n   Mackerras)\n\n - rev-list and object-layer in general is less (much less)\n   space hungry (Linus).\n\n - the source is more friendly to stricter compilers such as\n   Sun's (Florian Forster).\n\n - git rebase --merge (Eric Wong).  This uses the usual 3-way\n   merge machinery while running rebase, and you can rebase\n   across renames if you use the recursive strategy which is the\n   default.\n\n - gitweb updates -- mostly cleanups (Jakub Narebski with help\n   from Pasky and Timo Hirvonen).\n\n - diff --color (Johannes).\n\n - ~/.gitconfig and $ENV{GIT_CONFIG} (Pasky and Johannes).\n\n - core.sharedrepository can take umask, group or world (Linus\n   and I)\n\n - \"git checkout -f\" removes files that becomes untracked from\n   the working tree\n\n - \"git clone/fetch\" from a corrupt repository does not\n   propagate brokenness to the downloaders.\n\n - \"git clone/fetch\" over the network gives better progress\n   updates; this may also help TCP timeout problems for people\n   behind NAT.\n\n - Many more commands are built-in (Lukas Sandström)\n\n - git can now be used on Kiritimati (Paul Eggert)\n\n----------------------------------------------------------------\n\n* The 'master' branch has these since the last announcement.\n\n   Andre Noll:\n      object-refs: avoid division by zero\n\n   David Woodhouse:\n      Log peer address when git-daemon called from inetd\n\n   Dennis Stosberg:\n      Make t8001-annotate and t8002-blame more portable\n      Fix t8001-annotate and t8002-blame for ActiveState Perl\n\n   Eric W. Biederman:\n      Fix git-format-patch -s\n      Check and document the options to prevent mistakes.\n\n   Eric Wong:\n      git-svn: fix --rmdir when using SVN:: libraries\n      rebase: Allow merge strategies to be used when rebasing\n      rebase: error out for NO_PYTHON if they use recursive merge\n      git-svn: fix commit --edit flag when using SVN:: libraries\n\n   Florian Forster:\n      Remove ranges from switch statements.\n      Initialize FAMs using `FLEX_ARRAY'.\n      Don't instantiate structures with FAMs.\n      Cast pointers to `void *' when used in a format.\n      Don't use empty structure initializers.\n      Change types used in bitfields to be `int's.\n      Remove all void-pointer arithmetic.\n\n   Jakub Narebski:\n      Move gitweb style to gitweb.css\n      gitweb: safely output binary files for 'blob_plain' action\n      gitweb: text files for 'blob_plain' action without charset by default\n      Fix gitweb stylesheet\n      Make CSS file gitweb/gitweb.css more readable\n      gitweb: add type=\"text/css\" to stylesheet link\n      Fix: Support for the standard mime.types map in gitweb\n      gitweb: A couple of page title tweaking\n      gitweb: style done with stylesheet\n      gitweb: whitespace cleanup\n      Add git version to gitweb output\n      Move $gitbin earlier in gitweb.cgi\n      gitweb: Make use of $PATH_INFO for project parameter\n      gitweb: whitespace cleanup around '='\n\n   Johannes Schindelin:\n      diff options: add --color\n      Initialize lock_file struct to all zero.\n      Fix setting config variables with an alternative GIT_CONFIG\n      Read configuration also from $HOME/.gitconfig\n      repo-config: Fix late-night bug\n      git_config: access() returns 0 on success, not > 0\n\n   Junio C Hamano:\n      read-tree: --prefix=<path>/ option.\n      write-tree: --prefix=<path>\n      read-tree: reorganize bind_merge code.\n      fetch-pack: give up after getting too many \"ack continue\"\n      shared repository: optionally allow reading to \"others\".\n      fix rfc2047 formatter.\n      xdiff: minor changes to match libxdiff-0.21\n      Restore SIGCHLD to SIG_DFL where we care about waitpid().\n      checkout -f: do not leave untracked working tree files.\n      upload-pack: avoid sending an incomplete pack upon failure\n      upload-pack: prepare for sideband message support.\n      Retire git-clone-pack\n      upload-pack/fetch-pack: support side-band communication\n      Add renaming-rebase test.\n      daemon: send stderr to /dev/null instead of closing.\n      rebase --merge: fix for rebasing more than 7 commits.\n      Makefile: do not force unneeded recompilation upon GIT_VERSION changes\n\n   Linus Torvalds:\n      Shrink \"struct object\" a bit\n      Move \"void *util\" from \"struct object\" into \"struct commit\"\n      Some more memory leak avoidance\n      Remove \"refs\" field from \"struct object\"\n      Add specialized object allocator\n      Add \"named object array\" concept\n      Fix grow_refs_hash()\n\n   Lukas Sandström:\n      Make git-write-tree a builtin\n      Make git-mailsplit a builtin\n      Make git-mailinfo a builtin\n      Make git-stripspace a builtin\n      Make git-update-index a builtin\n      Make git-update-ref a builtin\n\n   Paul Eggert:\n      date.c: improve guess between timezone offset and year.\n\n   Paul Mackerras:\n      Fix PPC SHA1 routine for large input buffers\n\n   Petr Baudis:\n      Support for extracting configuration from different files\n      Support for the standard mime.types map in gitweb\n\n   Rene Scharfe:\n      git-tar-tree: Simplify write_trailer()\n      git-tar-tree: documentation update\n      git-tar-tree: no more void pointer arithmetic\n      Make release tarballs friendlier to older tar versions\n\n   Timo Hirvonen:\n      gitweb: Use $hash_base as $search_hash if possible\n\n   Uwe Zeisberger:\n      Fix possible out-of-bounds array access\n\n   Yakov Lerner:\n      auto-detect changed prefix and/or changed build flags\n      Pass -DDEFAULT_GIT_TEMPLATE_DIR only where actually used.\n\n\n* The 'pu' branch, in addition, has these.\n\n   Johannes Schindelin:\n      Teach diff about -b and -w flags\n\n   Lukas Sandström:\n      Make it possible to call cmd_apply multiple times\n      Make git-am a builtin\n"},{"id":"22301","messageId":"7vwtb9hrp1.fsf@assigned-by-dhcp.cox.net","threadId":"4622","inReplyTo":"7v8xnpj7hg.fsf@assigned-by-dhcp.cox.net","subject":"Re: What's in git.git and announcing v1.4.1-rc1","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2006-06-22T20:16:10Z","receivedAt":"2006-06-22T20:16:10Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Junio C Hamano <junkio@cox.net> writes:\n\n> * The 'pu' branch, in addition, has these.\n>\n>    Johannes Schindelin:\n>       Teach diff about -b and -w flags\n\nI am hoping to coordinate the inclusion of this upstream first\nand have this hopefully in the real 1.4.1 release.\n\n>    Lukas Sandström:\n>       Make it possible to call cmd_apply multiple times\n>       Make git-am a builtin\n\nLast time I tried this, it did not work for me, so I am putting\nit on hold.  I feel, however, \"am\" is a high-enough-level tool\nthat we would prefer to keep it scriptable for quick tweaks.\n\nIf it is hurting portability because it is written in shell,\nmaybe this can be moved to all Perl (especially when Pasky's\nGit.pm is ready) or Python.  Personally I think Windows minded\nfolks who cannot stand command-line interface Cygwin port gives\nwould not be satisfied anyway, until somebody writes a native\ndrag-this-mail-and-drop-on-that-brach tool, so porting the\ncommand out of shell may not be even worth doing.  I dunno.\n"},{"id":"22302","messageId":"4d8e3fd30606221321u4e27cf56le3bf60e07a8c4527@mail.gmail.com","threadId":"4622","inReplyTo":"7v8xnpj7hg.fsf@assigned-by-dhcp.cox.net","subject":"Re: What's in git.git and announcing v1.4.1-rc1","fromName":"Paolo Ciarrocchi","fromEmail":"paolo.ciarrocchi@gmail.com","sentAt":"2006-06-22T20:21:59Z","receivedAt":"2006-06-22T20:21:59Z","isPatch":false,"sender":{"key":"paolo.ciarrocchi@gmail.com","avatar":null},"body":"On 6/22/06, Junio C Hamano <junkio@cox.net> wrote:\n> I've merged quite a bit of stuff and tagged the tip of \"master\"\n> as GIT 1.4.1-rc1.\n\n\nPulled and installed.\n\nWhen I fire up gitk I see the following error messages, even if gitk\nseems to be working fine:\npaolo@Italia:~/git$ gitk\ninvalid command name \".ctop.cdet.left.ctext\"\n    while executing\n\"$ctext conf -state normal\"\n    (procedure \"dispneartags\" line 7)\n    invoked from within\n\"dispneartags\"\n    (procedure \"restartatags\" line 28)\n    invoked from within\n\"restartatags 869\"\n    (\"after\" script)\n\n\n-- \nPaolo\nhttp://paolociarrocchi.googlepages.com\nhttp://picasaweb.google.com/paolo.ciarrocchi\n"},{"id":"22304","messageId":"Pine.LNX.4.64.0606221301500.5498@g5.osdl.org","threadId":"4622","inReplyTo":"7v8xnpj7hg.fsf@assigned-by-dhcp.cox.net","subject":"Re: What's in git.git and announcing v1.4.1-rc1","fromName":"Linus Torvalds","fromEmail":"torvalds@osdl.org","sentAt":"2006-06-22T20:53:31Z","receivedAt":"2006-06-22T20:53:31Z","isPatch":false,"sender":{"key":"torvalds@linux-foundation.org","avatar":"https://avatars.githubusercontent.com/u/1024025?v=4"},"body":"\n\nOn Thu, 22 Jun 2006, Junio C Hamano wrote:\n> \n>  - diff --color (Johannes).\n\nI like colorized diffs, but let's face it, those particular color choices \nwill make most people decide to pick out their eyes with a fondue fork.\n\nAnd that's not good. Digging in your eye-sockets with a fondue fork is \nstrictly considered to be bad for your health, and seven out of nine \noptometrists are dead set against the practice.\n\nSo in order to avoid a lot of blind git users, please apply this patch.\n\nThis patch does:\n\n - always reset the color _before_ printing out the newline.\n\n   This is actually important. You (and Johannes) didn't see it, because \n   it only matters if you set the background, but if you don't do this, \n   you get some random and funky behaviour if you pick a color with a \n   non-default background (which still potentially has problems with tabs \n   etc, but less so).\n\n - allow people to have a different color for the \"file headers\" \n   (DIFF_METAINFO) and for the \"fragment header\" (DIFF_FRAGINFO). Also, \n   make a difference between \"normal color\" and \"reset colors\"\n\n - default to red/green for old/new lines. That's the norm, I'd think.\n\n - instead of that eye-popping (and eye-ball-with-a-fondue-fork-popping) \n   purple color for metadata, use bold-face for file headers, and cyan for \n   the frag headers. I actually prefer the \"gray background\" for that, but \n   it only works well in xterms, so COLOR_CYAN it is..\n\nHmm?\n\n\t\tLinus\n---\n diff.c |   99 +++++++++++++++++++++++++++++++++++++---------------------------\n 1 files changed, 58 insertions(+), 41 deletions(-)\n\ndiff --git a/diff.c b/diff.c\nindex 22b643c..07e9d56 100644\n--- a/diff.c\n+++ b/diff.c\n@@ -26,17 +26,41 @@ int git_diff_config(const char *var, con\n }\n \n enum color_diff {\n-\tDIFF_PLAIN = 0,\n-\tDIFF_METAINFO = 1,\n-\tDIFF_FILE_OLD = 2,\n-\tDIFF_FILE_NEW = 3,\n+\tDIFF_RESET = 0,\n+\tDIFF_PLAIN = 1,\n+\tDIFF_METAINFO = 2,\n+\tDIFF_FRAGINFO = 3,\n+\tDIFF_FILE_OLD = 4,\n+\tDIFF_FILE_NEW = 5,\n };\n \n+#define COLOR_NORMAL  \"\"\n+#define COLOR_BOLD    \"\\033[1m\"\n+#define COLOR_DIM     \"\\033[2m\"\n+#define COLOR_UL      \"\\033[4m\"\n+#define COLOR_BLINK   \"\\033[5m\"\n+#define COLOR_REVERSE \"\\033[7m\"\n+#define COLOR_RESET   \"\\033[m\"\n+\n+#define COLOR_BLACK   \"\\033[30m\"\n+#define COLOR_RED     \"\\033[31m\"\n+#define COLOR_GREEN   \"\\033[32m\"\n+#define COLOR_YELLOW  \"\\033[33m\"\n+#define COLOR_BLUE    \"\\033[34m\"\n+#define COLOR_MAGENTA \"\\033[35m\"\n+#define COLOR_CYAN    \"\\033[36m\"\n+#define COLOR_WHITE   \"\\033[37m\"\n+\n+#define COLOR_CYANBG  \"\\033[46m\"\n+#define COLOR_GRAYBG  \"\\033[47m\"\t// Good for xterm\n+\n static const char *diff_colors[] = {\n-\t\"\\033[0;0m\",\n-\t\"\\033[1;35m\",\n-\t\"\\033[1;31m\",\n-\t\"\\033[1;34m\",\n+\t[DIFF_RESET]    = COLOR_RESET,\n+\t[DIFF_PLAIN]    = COLOR_NORMAL,\n+\t[DIFF_METAINFO] = COLOR_BOLD,\n+\t[DIFF_FRAGINFO] = COLOR_CYAN,\n+\t[DIFF_FILE_OLD] = COLOR_RED,\n+\t[DIFF_FILE_NEW] = COLOR_GREEN,\n };\n \n static char *quote_one(const char *str)\n@@ -196,22 +220,23 @@ struct emit_callback {\n \tconst char **label_path;\n };\n \n-static inline void color_diff(int diff_use_color, enum color_diff ix)\n+static inline const char *get_color(int diff_use_color, enum color_diff ix)\n {\n \tif (diff_use_color)\n-\t\tfputs(diff_colors[ix], stdout);\n+\t\treturn diff_colors[ix];\n+\treturn \"\";\n }\n \n static void fn_out_consume(void *priv, char *line, unsigned long len)\n {\n \tint i;\n \tstruct emit_callback *ecbdata = priv;\n+\tconst char *set = get_color(ecbdata->color_diff, DIFF_METAINFO);\n+\tconst char *reset = get_color(ecbdata->color_diff, DIFF_RESET);\t\n \n \tif (ecbdata->label_path[0]) {\n-\t\tcolor_diff(ecbdata->color_diff, DIFF_METAINFO);\n-\t\tprintf(\"--- %s\\n\", ecbdata->label_path[0]);\n-\t\tcolor_diff(ecbdata->color_diff, DIFF_METAINFO);\n-\t\tprintf(\"+++ %s\\n\", ecbdata->label_path[1]);\n+\t\tprintf(\"%s--- %s%s\\n\", set, ecbdata->label_path[0], reset);\n+\t\tprintf(\"%s+++ %s%s\\n\", set, ecbdata->label_path[1], reset);\n \t\tecbdata->label_path[0] = ecbdata->label_path[1] = NULL;\n \t}\n \n@@ -222,10 +247,10 @@ static void fn_out_consume(void *priv, c\n \t\t;\n \tif (2 <= i && i < len && line[i] == ' ') {\n \t\tecbdata->nparents = i - 1;\n-\t\tcolor_diff(ecbdata->color_diff, DIFF_METAINFO);\n+\t\tset = get_color(ecbdata->color_diff, DIFF_FRAGINFO);\n \t}\n \telse if (len < ecbdata->nparents)\n-\t\tcolor_diff(ecbdata->color_diff, DIFF_PLAIN);\n+\t\tset = reset;\n \telse {\n \t\tint nparents = ecbdata->nparents;\n \t\tint color = DIFF_PLAIN;\n@@ -235,10 +260,11 @@ static void fn_out_consume(void *priv, c\n \t\t\telse if (line[i] == '+')\n \t\t\t\tcolor = DIFF_FILE_NEW;\n \t\t}\n-\t\tcolor_diff(ecbdata->color_diff, color);\n+\t\tset = get_color(ecbdata->color_diff, color);\n \t}\n-\tfwrite(line, len, 1, stdout);\n-\tcolor_diff(ecbdata->color_diff, DIFF_PLAIN);\n+\tif (len > 0 && line[len-1] == '\\n')\n+\t\tlen--;\n+\tprintf(\"%s%.*s%s\\n\", set, (int) len, line, reset);\n }\n \n static char *pprint_rename(const char *a, const char *b)\n@@ -589,40 +615,32 @@ static void builtin_diff(const char *nam\n \tmmfile_t mf1, mf2;\n \tconst char *lbl[2];\n \tchar *a_one, *b_two;\n+\tconst char *set = get_color(o->color_diff, DIFF_METAINFO);\n+\tconst char *reset = get_color(o->color_diff, DIFF_PLAIN);\n \n \ta_one = quote_two(\"a/\", name_a);\n \tb_two = quote_two(\"b/\", name_b);\n \tlbl[0] = DIFF_FILE_VALID(one) ? a_one : \"/dev/null\";\n \tlbl[1] = DIFF_FILE_VALID(two) ? b_two : \"/dev/null\";\n-\tcolor_diff(o->color_diff, DIFF_METAINFO);\n-\tprintf(\"diff --git %s %s\\n\", a_one, b_two);\n+\tprintf(\"%sdiff --git %s %s%s\\n\", set, a_one, b_two, reset);\n \tif (lbl[0][0] == '/') {\n \t\t/* /dev/null */\n-\t\tcolor_diff(o->color_diff, DIFF_METAINFO);\n-\t\tprintf(\"new file mode %06o\\n\", two->mode);\n-\t\tif (xfrm_msg && xfrm_msg[0]) {\n-\t\t\tcolor_diff(o->color_diff, DIFF_METAINFO);\n-\t\t\tputs(xfrm_msg);\n-\t\t}\n+\t\tprintf(\"%snew file mode %06o%s\\n\", set, two->mode, reset);\n+\t\tif (xfrm_msg && xfrm_msg[0])\n+\t\t\tprintf(\"%s%s%s\\n\", set, xfrm_msg, reset);\n \t}\n \telse if (lbl[1][0] == '/') {\n-\t\tprintf(\"deleted file mode %06o\\n\", one->mode);\n-\t\tif (xfrm_msg && xfrm_msg[0]) {\n-\t\t\tcolor_diff(o->color_diff, DIFF_METAINFO);\n-\t\t\tputs(xfrm_msg);\n-\t\t}\n+\t\tprintf(\"%sdeleted file mode %06o%s\\n\", set, one->mode, reset);\n+\t\tif (xfrm_msg && xfrm_msg[0])\n+\t\t\tprintf(\"%s%s%s\\n\", set, xfrm_msg, reset);\n \t}\n \telse {\n \t\tif (one->mode != two->mode) {\n-\t\t\tcolor_diff(o->color_diff, DIFF_METAINFO);\n-\t\t\tprintf(\"old mode %06o\\n\", one->mode);\n-\t\t\tcolor_diff(o->color_diff, DIFF_METAINFO);\n-\t\t\tprintf(\"new mode %06o\\n\", two->mode);\n-\t\t}\n-\t\tif (xfrm_msg && xfrm_msg[0]) {\n-\t\t\tcolor_diff(o->color_diff, DIFF_METAINFO);\n-\t\t\tputs(xfrm_msg);\n+\t\t\tprintf(\"%sold mode %06o%s\\n\", set, one->mode, reset);\n+\t\t\tprintf(\"%snew mode %06o%s\\n\", set, two->mode, reset);\n \t\t}\n+\t\tif (xfrm_msg && xfrm_msg[0])\n+\t\t\tprintf(\"%s%s%s\\n\", set, xfrm_msg, reset);\n \t\t/*\n \t\t * we do not run diff between different kind\n \t\t * of objects.\n@@ -630,7 +648,6 @@ static void builtin_diff(const char *nam\n \t\tif ((one->mode ^ two->mode) & S_IFMT)\n \t\t\tgoto free_ab_and_return;\n \t\tif (complete_rewrite) {\n-\t\t\tcolor_diff(o->color_diff, DIFF_PLAIN);\n \t\t\temit_rewrite_diff(name_a, name_b, one, two);\n \t\t\tgoto free_ab_and_return;\n \t\t}\n"},{"id":"22305","messageId":"20060622205859.GF21864@pasky.or.cz","threadId":"4622","inReplyTo":"Pine.LNX.4.64.0606221301500.5498@g5.osdl.org","subject":"Re: What's in git.git and announcing v1.4.1-rc1","fromName":"Petr Baudis","fromEmail":"pasky@suse.cz","sentAt":"2006-06-22T20:58:59Z","receivedAt":"2006-06-22T20:58:59Z","isPatch":false,"sender":{"key":"pasky@ucw.cz","avatar":"https://avatars.githubusercontent.com/u/18439?v=4"},"body":"Dear diary, on Thu, Jun 22, 2006 at 10:53:31PM CEST, I got a letter\nwhere Linus Torvalds <torvalds@osdl.org> said that...\n> So in order to avoid a lot of blind git users, please apply this patch.\n\nGreat, since this also seems to make git diff more or less consistent\nwith cg diff in the colors choice.\n\n>  enum color_diff {\n> -\tDIFF_PLAIN = 0,\n> -\tDIFF_METAINFO = 1,\n> -\tDIFF_FILE_OLD = 2,\n> -\tDIFF_FILE_NEW = 3,\n> +\tDIFF_RESET = 0,\n> +\tDIFF_PLAIN = 1,\n> +\tDIFF_METAINFO = 2,\n> +\tDIFF_FRAGINFO = 3,\n> +\tDIFF_FILE_OLD = 4,\n> +\tDIFF_FILE_NEW = 5,\n>  };\n\nIsn't manually numbering the enum choices somewhat pointless, though?\n(Actually makes it more difficult to do changes in it later.)\n\n-- \n\t\t\t\tPetr \"Pasky\" Baudis\nStuff: http://pasky.or.cz/\nA person is just about as big as the things that make them angry.\n"},{"id":"22307","messageId":"Pine.LNX.4.64.0606221402140.6483@g5.osdl.org","threadId":"4622","inReplyTo":"20060622205859.GF21864@pasky.or.cz","subject":"Re: What's in git.git and announcing v1.4.1-rc1","fromName":"Linus Torvalds","fromEmail":"torvalds@osdl.org","sentAt":"2006-06-22T21:02:41Z","receivedAt":"2006-06-22T21:02:41Z","isPatch":false,"sender":{"key":"torvalds@linux-foundation.org","avatar":"https://avatars.githubusercontent.com/u/1024025?v=4"},"body":"\n\nOn Thu, 22 Jun 2006, Petr Baudis wrote:\n> \n> Isn't manually numbering the enum choices somewhat pointless, though?\n> (Actually makes it more difficult to do changes in it later.)\n\nYeah, I just mindlessly followed Johannes' original scheme. \n\n\t\tLinus\n"},{"id":"22310","messageId":"e7f1pk$l1q$1@sea.gmane.org","threadId":"4622","inReplyTo":"Pine.LNX.4.64.0606221402140.6483@g5.osdl.org","subject":"Re: What's in git.git and announcing v1.4.1-rc1","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2006-06-22T21:24:06Z","receivedAt":"2006-06-22T21:24:06Z","isPatch":false,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"Linus Torvalds wrote:\n\n> \n> \n> On Thu, 22 Jun 2006, Petr Baudis wrote:\n>> \n>> Isn't manually numbering the enum choices somewhat pointless, though?\n>> (Actually makes it more difficult to do changes in it later.)\n> \n> Yeah, I just mindlessly followed Johannes' original scheme. \n\nYou might want to start at 0, just in case...\n\n-- \nJakub Narebski\nWarsaw, Poland\nShadeHawk on #git\n"},{"id":"22311","messageId":"20060622212826.GG21864@pasky.or.cz","threadId":"4622","inReplyTo":"e7f1pk$l1q$1@sea.gmane.org","subject":"Re: What's in git.git and announcing v1.4.1-rc1","fromName":"Petr Baudis","fromEmail":"pasky@suse.cz","sentAt":"2006-06-22T21:28:26Z","receivedAt":"2006-06-22T21:28:26Z","isPatch":false,"sender":{"key":"pasky@ucw.cz","avatar":"https://avatars.githubusercontent.com/u/18439?v=4"},"body":"> >> Isn't manually numbering the enum choices somewhat pointless, though?\n> >> (Actually makes it more difficult to do changes in it later.)\n> > \n> > Yeah, I just mindlessly followed Johannes' original scheme. \n> \n> You might want to start at 0, just in case...\n\nC99 (6.7.2.2) guarantees the enumeration constants start at 0 if not\nspecified otherwise.\n\n-- \n\t\t\t\tPetr \"Pasky\" Baudis\nStuff: http://pasky.or.cz/\nA person is just about as big as the things that make them angry.\n"},{"id":"22313","messageId":"7v7j38j144.fsf@assigned-by-dhcp.cox.net","threadId":"4622","inReplyTo":"Pine.LNX.4.64.0606221301500.5498@g5.osdl.org","subject":"Re: What's in git.git and announcing v1.4.1-rc1","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2006-06-22T22:07:23Z","receivedAt":"2006-06-22T22:07:23Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Linus Torvalds <torvalds@osdl.org> writes:\n\n> On Thu, 22 Jun 2006, Junio C Hamano wrote:\n>> \n>>  - diff --color (Johannes).\n>\n> I like colorized diffs, but let's face it, those particular color choices \n> will make most people decide to pick out their eyes with a fondue fork.\n\nWell, I admit I do not use colorized diffs myself.  As a matter\nof fact, I use specialized terminfo to disable coloring on my\nterminal session, since fontifying in GNUS otherwise gives me\nunreadable screen and I am too lazy to figure out how to turn it\noff.\n\nI do however usually test colored stuff with at least white and\nblack backgrounds,\n\n> This patch does:\n>\n>  - always reset the color _before_ printing out the newline.\n\nSorry, although I did notice this (interrupting a long diff, or\nrunning it with \"less -r\" and quitting it would leave the\nterminal in funny color), I did not bother to fix it.\n\n>  - default to red/green for old/new lines. That's the norm, I'd think.\n\nOK.\n\n>  - instead of that eye-popping (and eye-ball-with-a-fondue-fork-popping) \n>    purple color for metadata, use bold-face for file headers, and cyan for \n>    the frag headers. I actually prefer the \"gray background\" for that, but \n>    it only works well in xterms, so COLOR_CYAN it is..\n\nReplacing it with COLOR_GRAYBG did not work out too well with\neither xterm nor kterm for me, although it did work under\ngnome-terminal.\n\nCyan foreground color is unreadable on white background and that\nwas why I did magenta in my original patch, but it may be just\nthat I am color challenged in that spectrum.\n"},{"id":"22316","messageId":"7vsllwhl3h.fsf@assigned-by-dhcp.cox.net","threadId":"4622","inReplyTo":"7v7j38j144.fsf@assigned-by-dhcp.cox.net","subject":"Re: What's in git.git and announcing v1.4.1-rc1","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2006-06-22T22:38:42Z","receivedAt":"2006-06-22T22:38:42Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Junio C Hamano <junkio@cox.net> writes:\n\n> Well, I admit I do not use colorized diffs myself.  As a matter\n> of fact, I use specialized terminfo to disable coloring on my\n> terminal session, since fontifying in GNUS otherwise gives me\n> unreadable screen and I am too lazy to figure out how to turn it\n> off.\n>\n> I do however usually test colored stuff with at least white and\n> black backgrounds,\n\nBy the way, in the ancient history, in commit 3443546 you did:\n\n--- a/Makefile\n+++ b/Makefile\n@@ -544,12 +545,18 @@ init-db.o: init-db.c\n                -DDEFAULT_GIT_TEMPLATE_DIR='\"$(template_dir_SQ)\"' $*.c\n\n $(LIB_OBJS): $(LIB_H)\n-$(patsubst git-%$X,%.o,$(PROGRAMS)): $(LIB_H)\n+$(patsubst git-%$X,%.o,$(PROGRAMS)): $(LIBS)\n $(DIFF_OBJS): diffcore.h\n\n $(LIB_FILE): $(LIB_OBJS)\n        $(AR) rcs $@ $(LIB_OBJS)\n\nwhich we kept until today.  This causes checkout-index.o and\nfriends to be recompiled when we touch diff.c (I do not mind\nrelinking git-checkout-index because libgit.a has changed, but\nrecompiling checkout-index.c is unneeded).  I think this was\ndone to make sure anything that includes xdiff/*.h files via\n\"xdiff-interface.h\" are recompiled when xdiff/*.h are changed,\nso I am thinking about loosening it a bit to depend on our\nheaders and xdiff/*.h headers, perhaps like this:\n\ndiff --git a/Makefile b/Makefile\nindex a5b6784..e29e3fa 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -582,7 +582,7 @@ git-http-push$X: revision.o http.o http-\n \t\t$(LIBS) $(CURL_LIBCURL) $(EXPAT_LIBEXPAT)\n \n $(LIB_OBJS) $(BUILTIN_OBJS): $(LIB_H)\n-$(patsubst git-%$X,%.o,$(PROGRAMS)): $(GITLIBS)\n+$(patsubst git-%$X,%.o,$(PROGRAMS)): $(LIB_H) $(wildcard */*.h)\n $(DIFF_OBJS): diffcore.h\n \n $(LIB_FILE): $(LIB_OBJS)\ndiff --git a/diff.c b/diff.c\ndiff --git a/xdiff/xdiff.h b/xdiff/xdiff.h\n"},{"id":"22339","messageId":"Pine.LNX.4.63.0606231305000.29667@wbgn013.biozentrum.uni-wuerzburg.de","threadId":"4622","inReplyTo":"Pine.LNX.4.64.0606221301500.5498@g5.osdl.org","subject":"Re: What's in git.git and announcing v1.4.1-rc1","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2006-06-23T11:10:15Z","receivedAt":"2006-06-23T11:10:15Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Thu, 22 Jun 2006, Linus Torvalds wrote:\n\n> On Thu, 22 Jun 2006, Junio C Hamano wrote:\n> > \n> >  - diff --color (Johannes).\n> \n>  - default to red/green for old/new lines. That's the norm, I'd think.\n\n... and which happens to be useless for 10% of the male population (and \neven more if you look specifically at Asian people). But then, I just \npasted that part from somewhere else.\n\nBesides, I rarely have a fondue fork handy when I sit in front of the \ncomputer. I actually do not own one. And when I am sitting in front of the \ncomputer, shops typically are closed (yeah, I am living in Germany, but we \n_do_ have cars...). So at least for 100% of the writers of this email, \nyour warning just does not apply.\n\nCiao,\nDscho\n"},{"id":"22340","messageId":"Pine.LNX.4.63.0606231310290.29667@wbgn013.biozentrum.uni-wuerzburg.de","threadId":"4622","inReplyTo":"Pine.LNX.4.64.0606221402140.6483@g5.osdl.org","subject":"Re: What's in git.git and announcing v1.4.1-rc1","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2006-06-23T11:10:54Z","receivedAt":"2006-06-23T11:10:54Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Thu, 22 Jun 2006, Linus Torvalds wrote:\n\n> On Thu, 22 Jun 2006, Petr Baudis wrote:\n> > \n> > Isn't manually numbering the enum choices somewhat pointless, though?\n> > (Actually makes it more difficult to do changes in it later.)\n> \n> Yeah, I just mindlessly followed Johannes' original scheme. \n\n... which wasn't his, to begin with ...\n"},{"id":"22357","messageId":"449BF508.9040207@draigBrady.com","threadId":"4622","inReplyTo":"Pine.LNX.4.63.0606231305000.29667@wbgn013.biozentrum.uni-wuerzburg.de","subject":"Re: What's in git.git and announcing v1.4.1-rc1","fromName":"Pádraig Brady","fromEmail":"p@draigbrady.com","sentAt":"2006-06-23T14:04:56Z","receivedAt":"2006-06-23T14:04:56Z","isPatch":false,"sender":{"key":"p@draigbrady.com","avatar":"https://gravatar.com/avatar/6d16c619bfc08087da3aa2baf6e69e438044a3dd657f0a31637d8de065ef5b27?d=mp&s=160"},"body":"Johannes Schindelin wrote:\n> Hi,\n> \n> On Thu, 22 Jun 2006, Linus Torvalds wrote:\n> \n> \n>>On Thu, 22 Jun 2006, Junio C Hamano wrote:\n>>\n>>> - diff --color (Johannes).\n>>\n>> - default to red/green for old/new lines. That's the norm, I'd think.\n> \n> \n> ... and which happens to be useless for 10% of the male population (and \n> even more if you look specifically at Asian people). But then, I just \n> pasted that part from somewhere else.\n\n:)\n\nSo 10% of the male population need to learn\ntraffic light positions rather than colours?\n\nI'm red/green colour blind which means I can't\ndistinguish _subtley_ different shades of red and green.\n\nvim is another fondue fork offender as it merges\nsyntax highlighting and diff colours in diff mode (vimdiff).\nI put the following in ~/.vimrc to disable that madness:\n\nif &diff\n    \"I'm only interested in diff colours\n    syntax off\nendif\n\nPádraig.\n"},{"id":"22358","messageId":"Pine.LNX.4.63.0606231624200.29667@wbgn013.biozentrum.uni-wuerzburg.de","threadId":"4622","inReplyTo":"449BF508.9040207@draigBrady.com","subject":"Re: What's in git.git and announcing v1.4.1-rc1","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2006-06-23T14:25:50Z","receivedAt":"2006-06-23T14:25:50Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Fri, 23 Jun 2006, Pádraig Brady wrote:\n\n> So 10% of the male population need to learn traffic light positions \n> rather than colours?\n\nA friend of mine was at the military and had to check new recruits for \ncolor-blindness. Only after the 20th color-blind man in a row he realized \nfor the first time in hist life that it was _him_, being the color-blind.\n\nCiao,\nDscho"},{"id":"22359","messageId":"Pine.LNX.4.64.0606230756050.6483@g5.osdl.org","threadId":"4622","inReplyTo":"Pine.LNX.4.63.0606231305000.29667@wbgn013.biozentrum.uni-wuerzburg.de","subject":"Re: What's in git.git and announcing v1.4.1-rc1","fromName":"Linus Torvalds","fromEmail":"torvalds@osdl.org","sentAt":"2006-06-23T14:59:33Z","receivedAt":"2006-06-23T14:59:33Z","isPatch":false,"sender":{"key":"torvalds@linux-foundation.org","avatar":"https://avatars.githubusercontent.com/u/1024025?v=4"},"body":"\n\nOn Fri, 23 Jun 2006, Johannes Schindelin wrote:\n> > \n> >  - default to red/green for old/new lines. That's the norm, I'd think.\n> \n> ... and which happens to be useless for 10% of the male population (and \n> even more if you look specifically at Asian people). But then, I just \n> pasted that part from somewhere else.\n\nSure. \n\n(Although I think it's 7% in general, and more in certain populations, \nsome Western European countries included)\n\nWhich just means that we should have some way to let people set their own \ncolors.\n\nThe _default_ should be the one people expect, though.\n\n\t\tLinus\n"},{"id":"22434","messageId":"7v7j36yfh1.fsf_-_@assigned-by-dhcp.cox.net","threadId":"4622","inReplyTo":"Pine.LNX.4.64.0606230756050.6483@g5.osdl.org","subject":"[PATCH] diff --color: use $GIT_DIR/config","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2006-06-24T11:12:42Z","receivedAt":"2006-06-24T11:12:42Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"This lets you use something like this in your $GIT_DIR/config\nfile.\n\n\t[diff]\n\t\tcolor = auto\n\n\t[diff.color]\n\t\tnew = blue\n\t\told = yellow\n\t\tfrag = reverse\n\nWhen diff.color is set to \"auto\", colored diff is enabled when\nthe standard output is the terminal.  Other choices are \"always\",\nand \"never\".  Usual boolean true/false can also be used.\n\nThe colormap entries can specify colors for the following slots:\n\n\tplain\t- lines that appear in both old and new file (context)\n\tmeta\t- diff --git header and extended git diff headers\n\tfrag\t- @@ -n,m +l,k @@ lines (hunk header)\n\told\t- lines deleted from old file\n\tnew\t- lines added to new file\n\nThe following color names can be used:\n\n\tnormal, bold, dim, l, blink, reverse, reset,\n\tblack, red, green, yellow, blue, magenta, cyan,\n\twhite\n\nSigned-off-by: Junio C Hamano <junkio@cox.net>\n\n---\n\n Linus Torvalds <torvalds@osdl.org> writes:\n\n > Which just means that we should have some way to let people set their own \n > colors.\n\n At the source level it is easy to specify color and attribute\n combinations (e.g. \"bold|red\") by having the preprocessor\n concatenate string literals, but I was too lazy to allow that\n from the configuration level.  People might want to have that,\n though.\n\n BTW, while doing this, I noticed that the patch does not do the\n color output for combined diffs.  Care to look into it after\n Timo's output format series settles?\n\n cache.h |    1 -\n diff.c  |   94 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---------\n 2 files changed, 80 insertions(+), 15 deletions(-)\n\ndiff --git a/cache.h b/cache.h\nindex efeafea..3502fee 100644\n--- a/cache.h\n+++ b/cache.h\n@@ -181,7 +181,6 @@ extern int assume_unchanged;\n extern int prefer_symlink_refs;\n extern int log_all_ref_updates;\n extern int warn_ambiguous_refs;\n-extern int diff_rename_limit_default;\n extern int shared_repository;\n extern const char *apply_default_whitespace;\n \ndiff --git a/diff.c b/diff.c\nindex 1db0285..33c8c57 100644\n--- a/diff.c\n+++ b/diff.c\n@@ -13,17 +13,8 @@ #include \"xdiff-interface.h\"\n \n static int use_size_cache;\n \n-int diff_rename_limit_default = -1;\n-\n-int git_diff_config(const char *var, const char *value)\n-{\n-\tif (!strcmp(var, \"diff.renamelimit\")) {\n-\t\tdiff_rename_limit_default = git_config_int(var, value);\n-\t\treturn 0;\n-\t}\n-\n-\treturn git_default_config(var, value);\n-}\n+static int diff_rename_limit_default = -1;\n+static int diff_use_color_default = 0;\n \n enum color_diff {\n \tDIFF_RESET = 0,\n@@ -51,9 +42,6 @@ #define COLOR_MAGENTA \"\\033[35m\"\n #define COLOR_CYAN    \"\\033[36m\"\n #define COLOR_WHITE   \"\\033[37m\"\n \n-#define COLOR_CYANBG  \"\\033[46m\"\n-#define COLOR_GRAYBG  \"\\033[47m\"\t// Good for xterm\n-\n static const char *diff_colors[] = {\n \t[DIFF_RESET]    = COLOR_RESET,\n \t[DIFF_PLAIN]    = COLOR_NORMAL,\n@@ -63,6 +51,83 @@ static const char *diff_colors[] = {\n \t[DIFF_FILE_NEW] = COLOR_GREEN,\n };\n \n+static int parse_diff_color_slot(const char *var, int ofs)\n+{\n+\tif (!strcasecmp(var+ofs, \"plain\"))\n+\t\treturn DIFF_PLAIN;\n+\tif (!strcasecmp(var+ofs, \"meta\"))\n+\t\treturn DIFF_METAINFO;\n+\tif (!strcasecmp(var+ofs, \"frag\"))\n+\t\treturn DIFF_FRAGINFO;\n+\tif (!strcasecmp(var+ofs, \"old\"))\n+\t\treturn DIFF_FILE_OLD;\n+\tif (!strcasecmp(var+ofs, \"new\"))\n+\t\treturn DIFF_FILE_NEW;\n+\tdie(\"bad config variable '%s'\", var);\n+}\n+\n+static const char *parse_diff_color_value(const char *value, const char *var)\n+{\n+\tif (!strcasecmp(value, \"normal\"))\n+\t\treturn COLOR_NORMAL;\n+\tif (!strcasecmp(value, \"bold\"))\n+\t\treturn COLOR_BOLD;\n+\tif (!strcasecmp(value, \"dim\"))\n+\t\treturn COLOR_DIM;\n+\tif (!strcasecmp(value, \"ul\"))\n+\t\treturn COLOR_UL;\n+\tif (!strcasecmp(value, \"blink\"))\n+\t\treturn COLOR_BLINK;\n+\tif (!strcasecmp(value, \"reverse\"))\n+\t\treturn COLOR_REVERSE;\n+\tif (!strcasecmp(value, \"reset\"))\n+\t\treturn COLOR_RESET;\n+\tif (!strcasecmp(value, \"black\"))\n+\t\treturn COLOR_BLACK;\n+\tif (!strcasecmp(value, \"red\"))\n+\t\treturn COLOR_RED;\n+\tif (!strcasecmp(value, \"green\"))\n+\t\treturn COLOR_GREEN;\n+\tif (!strcasecmp(value, \"yellow\"))\n+\t\treturn COLOR_YELLOW;\n+\tif (!strcasecmp(value, \"blue\"))\n+\t\treturn COLOR_BLUE;\n+\tif (!strcasecmp(value, \"magenta\"))\n+\t\treturn COLOR_MAGENTA;\n+\tif (!strcasecmp(value, \"cyan\"))\n+\t\treturn COLOR_CYAN;\n+\tif (!strcasecmp(value, \"white\"))\n+\t\treturn COLOR_WHITE;\n+\tdie(\"bad config value '%s' for variable '%s'\", value, var);\n+}\n+\n+int git_diff_config(const char *var, const char *value)\n+{\n+\tif (!strcmp(var, \"diff.renamelimit\")) {\n+\t\tdiff_rename_limit_default = git_config_int(var, value);\n+\t\treturn 0;\n+\t}\n+\tif (!strcmp(var, \"diff.color\")) {\n+\t\tif (!value)\n+\t\t\tdiff_use_color_default = 1; /* bool */\n+\t\telse if (!strcasecmp(value, \"auto\"))\n+\t\t\tdiff_use_color_default = isatty(1);\n+\t\telse if (!strcasecmp(value, \"never\"))\n+\t\t\tdiff_use_color_default = 0;\n+\t\telse if (!strcasecmp(value, \"always\"))\n+\t\t\tdiff_use_color_default = 1;\n+\t\telse\n+\t\t\tdiff_use_color_default = git_config_bool(var, value);\n+\t\treturn 0;\n+\t}\n+\tif (!strncmp(var, \"diff.color.\", 11)) {\n+\t\tint slot = parse_diff_color_slot(var, 11);\n+\t\tdiff_colors[slot] = parse_diff_color_value(value, var);\n+\t\treturn 0;\n+\t}\n+\treturn git_default_config(var, value);\n+}\n+\n static char *quote_one(const char *str)\n {\n \tint needlen;\n@@ -1362,6 +1427,7 @@ void diff_setup(struct diff_options *opt\n \n \toptions->change = diff_change;\n \toptions->add_remove = diff_addremove;\n+\toptions->color_diff = diff_use_color_default;\n }\n \n int diff_setup_done(struct diff_options *options)\n-- \n1.4.1.rc1.ga77b7\n"},{"id":"22438","messageId":"7vveqqx0f4.fsf_-_@assigned-by-dhcp.cox.net","threadId":"4622","inReplyTo":"Pine.LNX.4.64.0606221301500.5498@g5.osdl.org","subject":"[PATCH] diff --color: use reset sequence when we mean reset.","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2006-06-24T11:23:11Z","receivedAt":"2006-06-24T11:23:11Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"\nSigned-off-by: Junio C Hamano <junkio@cox.net>\n---\n\n Linus Torvalds <torvalds@osdl.org> writes:\n\n >  - always reset the color _before_ printing out the newline.\n >\n >    This is actually important. You (and Johannes) didn't see it, because \n >    it only matters if you set the background, but if you don't do this, \n >    you get some random and funky behaviour if you pick a color with a \n >    non-default background (which still potentially has problems with tabs \n >    etc, but less so).\n\n Doh.\n\n I think you did not see it until you tried \"git diff\" with\n a stat-dirty but otherwise unmodified file.\n\n diff.c |    2 +-\n 1 files changed, 1 insertions(+), 1 deletions(-)\n\ndiff --git a/diff.c b/diff.c\nindex 33c8c57..549f4e0 100644\n--- a/diff.c\n+++ b/diff.c\n@@ -681,7 +681,7 @@ static void builtin_diff(const char *nam\n \tconst char *lbl[2];\n \tchar *a_one, *b_two;\n \tconst char *set = get_color(o->color_diff, DIFF_METAINFO);\n-\tconst char *reset = get_color(o->color_diff, DIFF_PLAIN);\n+\tconst char *reset = get_color(o->color_diff, DIFF_RESET);\n \n \ta_one = quote_two(\"a/\", name_a);\n \tb_two = quote_two(\"b/\", name_b);\n-- \n1.4.1.rc1.ga77b7\n"},{"id":"22472","messageId":"Pine.LNX.4.63.0606242037550.29667@wbgn013.biozentrum.uni-wuerzburg.de","threadId":"4622","inReplyTo":"7v7j36yfh1.fsf_-_@assigned-by-dhcp.cox.net","subject":"Re: [PATCH] diff --color: use $GIT_DIR/config","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2006-06-24T19:44:50Z","receivedAt":"2006-06-24T19:44:50Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Sat, 24 Jun 2006, Junio C Hamano wrote:\n\n>  BTW, while doing this, I noticed that the patch does not do the\n>  color output for combined diffs.  Care to look into it after\n>  Timo's output format series settles?\n\nYou mean just copying the relevant parts from your patch, which I missed, \nand do minimal testing? Sure ;-)\n\nBut first, by way of thanks to Martin, I have to reintroduce into \nformat-patch the check for patches which are already upstream.\n\nCiao,\nDscho\n"}]}