Re: [PATCH] Make sure the diff machinery outputs \ No newline ... in english

2005-09-06 Thread Daniel Barkalow
On Mon, 5 Sep 2005, Linus Torvalds wrote:

 On Mon, 5 Sep 2005, Fredrik Kuivinen wrote:
  
  After a quick look through the diff source I didn't find anything
  else. It's quite possible that I haved missed something though. Most
  of the translated messages are related to error reporting, which I
  guess might be nice to have in the user specified language.
 
 Is it possible that we could integrate the diff algorithm into git, and 
 get rid of the dependency on an external GNU diff? It would also make the 
 portability problems go away (ie old diff's being broken).
 
 It would also potentially speed up the normal built-in diff a lot, since
 we wouldn't have to execute a whole other program to generate a diff, just
 call a helper function the way we do for xdiff..
 
 Unreasonable?

The algorithm actually used by GNU diff is pretty complicated, and I don't 
really understand the actual implementation, which evidentally has a few 
important refinements over the original paper.

I've written my own diff, mainly to try a different algorithm, and it 
seems to work, but the code isn't yet appropriate to submit. This 
algorithm also has the advantage that it can identify moved sections and 
is less interested in interleaving a removed function with a new function 
to provide the shortest possible diff. I expect that I could get it to 
work if I put in a day on it; it's mostly writing a hashtable 
implementation for non-NULL-terminated string-keyed hash tables.

-Daniel
*This .sig left intentionally blank*
-
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] Make sure the diff machinery outputs \ No newline ... in english

2005-09-05 Thread Fredrik Kuivinen
On Sun, Sep 04, 2005 at 11:48:08AM -0700, Junio C Hamano wrote:
 Fredrik Kuivinen [EMAIL PROTECTED] writes:
 
  In non-english locales diff(1) do sometimes output \ No newline at end of
  file in some other language. Set LC_ALL to C before execing diff to avoid
  this behaviour.
 
  Signed-off-by: Fredrik Kuivinen [EMAIL PROTECTED]
 
 I was thinking about this when I was examining your other patch.
 
 What else, other than the incomplete line marker (and timestamp
 output it uses by default, which we disable by passing explicit
 -L flags), are affected by locale in diff output?

After a quick look through the diff source I didn't find anything
else. It's quite possible that I haved missed something though. Most
of the translated messages are related to error reporting, which I
guess might be nice to have in the user specified language.

 Especially, if the diff output is more readable for human
 consumers (i.e. reviewers) without making it harder to use to
 machine consumers (i.e. patch or git-apply) when generated under
 a locale that is 'native' to the data, this patch robs from
 users the possibility of doing so.
 
 IOW, in a Swedes-only project that tracks a document in Swedish,
 it _might_ be friendlier and more useful to the users if allowed
 generating diffs under sv_SE locale, as long as such a diff does
 not make the processing by patch and git-apply more difficult
 (which your other patch already solved for git-apply).

I agree that it's kind of evil to remove the option of generating the
output in some other language.

Another possibility is to set LC_MESSAGES to C instead. If we go this
way the user can override it by setting LC_ALL. The difference is that
in most configurations the user has to make an active choice to get
the 'native' language output and english will be the default.

- Fredrik
-
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] Make sure the diff machinery outputs \ No newline ... in english

2005-09-04 Thread Fredrik Kuivinen
In non-english locales diff(1) do sometimes output \ No newline at end of
file in some other language. Set LC_ALL to C before execing diff to avoid
this behaviour.

Signed-off-by: Fredrik Kuivinen [EMAIL PROTECTED]


---

 diff.c |1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

eb6261334d65c3134d9dd822fd64e33ed8ad2dfc
diff --git a/diff.c b/diff.c
--- a/diff.c
+++ b/diff.c
@@ -207,6 +207,7 @@ static void builtin_diff(const char *nam
}
}
fflush(NULL);
+   putenv(LC_ALL=C);
execlp(/bin/sh,sh, -c, cmd, NULL);
 }
 
-
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] Make sure the diff machinery outputs \ No newline ... in english

2005-09-04 Thread Junio C Hamano
Fredrik Kuivinen [EMAIL PROTECTED] writes:

 In non-english locales diff(1) do sometimes output \ No newline at end of
 file in some other language. Set LC_ALL to C before execing diff to avoid
 this behaviour.

 Signed-off-by: Fredrik Kuivinen [EMAIL PROTECTED]

I was thinking about this when I was examining your other patch.

What else, other than the incomplete line marker (and timestamp
output it uses by default, which we disable by passing explicit
-L flags), are affected by locale in diff output?

Especially, if the diff output is more readable for human
consumers (i.e. reviewers) without making it harder to use to
machine consumers (i.e. patch or git-apply) when generated under
a locale that is 'native' to the data, this patch robs from
users the possibility of doing so.

IOW, in a Swedes-only project that tracks a document in Swedish,
it _might_ be friendlier and more useful to the users if allowed
generating diffs under sv_SE locale, as long as such a diff does
not make the processing by patch and git-apply more difficult
(which your other patch already solved for git-apply).


-
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html