* [PATCH] MinGW: fix diff --no-index /dev/null ... [not found] <cover.1236441065u.git.johannes.schindelin@gmx.de> @ 2009-03-07 15:51 ` Johannes Schindelin 2009-03-07 19:56 ` Johannes Sixt 2009-03-07 20:15 ` Junio C Hamano 0 siblings, 2 replies; 6+ messages in thread From: Johannes Schindelin @ 2009-03-07 15:51 UTC (permalink / raw) To: git, gitster; +Cc: Johannes Sixt When launching "diff --no-index" with a parameter "/dev/null", the MSys bash converts the "/dev/null" to a "nul", which usually makes sense. But diff --no-index got confused and tried to access a _file_ called "nul". While at it, the comment in t4012, expressed as ":# <text>" was turned into ": <text>" so that MSys' path name mangling does not kick in. With this patch, t4012 passes in msysGit. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> --- diff-no-index.c | 4 ++++ t/t4012-diff-binary.sh | 2 +- 2 files changed, 5 insertions(+), 1 deletions(-) diff --git a/diff-no-index.c b/diff-no-index.c index 0a14268..598687b 100644 --- a/diff-no-index.c +++ b/diff-no-index.c @@ -38,6 +38,10 @@ static int get_mode(const char *path, int *mode) if (!path || !strcmp(path, "/dev/null")) *mode = 0; +#ifdef _WIN32 + else if (!strcasecmp(path, "nul")) + *mode = 0; +#endif else if (!strcmp(path, "-")) *mode = create_ce_mode(0666); else if (lstat(path, &st)) diff --git a/t/t4012-diff-binary.sh b/t/t4012-diff-binary.sh index 3cf5b5c..f64aa48 100755 --- a/t/t4012-diff-binary.sh +++ b/t/t4012-diff-binary.sh @@ -87,7 +87,7 @@ nul_to_q() { test_expect_success 'diff --no-index with binary creation' ' echo Q | q_to_nul >binary && - (:# hide error code from diff, which just indicates differences + (: hide error code from diff, which just indicates differences git diff --binary --no-index /dev/null binary >current || true ) && -- 1.6.2.327.g0fa6c ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] MinGW: fix diff --no-index /dev/null ... 2009-03-07 15:51 ` [PATCH] MinGW: fix diff --no-index /dev/null Johannes Schindelin @ 2009-03-07 19:56 ` Johannes Sixt 2009-03-07 20:15 ` Junio C Hamano 1 sibling, 0 replies; 6+ messages in thread From: Johannes Sixt @ 2009-03-07 19:56 UTC (permalink / raw) To: Johannes Schindelin; +Cc: git, gitster On Samstag, 7. März 2009, Johannes Schindelin wrote: > --- a/diff-no-index.c > +++ b/diff-no-index.c > @@ -38,6 +38,10 @@ static int get_mode(const char *path, int *mode) > > if (!path || !strcmp(path, "/dev/null")) > *mode = 0; > +#ifdef _WIN32 > + else if (!strcasecmp(path, "nul")) > + *mode = 0; > +#endif > else if (!strcmp(path, "-")) > *mode = create_ce_mode(0666); > else if (lstat(path, &st)) IMO this #ifdef is a reasonable compromise. Trying to move this into git-compat-util.h or mingw.h somehow would only obfuscate the code. Tested-by: Johannes Sixt <j6t@kdbg.org> -- Hannes ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] MinGW: fix diff --no-index /dev/null ... 2009-03-07 15:51 ` [PATCH] MinGW: fix diff --no-index /dev/null Johannes Schindelin 2009-03-07 19:56 ` Johannes Sixt @ 2009-03-07 20:15 ` Junio C Hamano 2009-03-07 20:47 ` Johannes Schindelin 2009-03-07 21:18 ` Johannes Sixt 1 sibling, 2 replies; 6+ messages in thread From: Junio C Hamano @ 2009-03-07 20:15 UTC (permalink / raw) To: Johannes Schindelin; +Cc: git, gitster, Johannes Sixt Johannes Schindelin <johannes.schindelin@gmx.de> writes: > diff --git a/diff-no-index.c b/diff-no-index.c > index 0a14268..598687b 100644 > --- a/diff-no-index.c > +++ b/diff-no-index.c > @@ -38,6 +38,10 @@ static int get_mode(const char *path, int *mode) > > if (!path || !strcmp(path, "/dev/null")) > *mode = 0; > +#ifdef _WIN32 > + else if (!strcasecmp(path, "nul")) > + *mode = 0; > +#endif > else if (!strcmp(path, "-")) > *mode = create_ce_mode(0666); > else if (lstat(path, &st)) I had a brief "Huh? -- doesn't this call for an is_dev_null() helper" moment, but I think you are right that diff-no-index.c is the right place to special case it. Should this go to 'maint'? > diff --git a/t/t4012-diff-binary.sh b/t/t4012-diff-binary.sh > index 3cf5b5c..f64aa48 100755 > --- a/t/t4012-diff-binary.sh > +++ b/t/t4012-diff-binary.sh > @@ -87,7 +87,7 @@ nul_to_q() { > > test_expect_success 'diff --no-index with binary creation' ' > echo Q | q_to_nul >binary && > - (:# hide error code from diff, which just indicates differences > + (: hide error code from diff, which just indicates differences > git diff --binary --no-index /dev/null binary >current || > true > ) && > -- > 1.6.2.327.g0fa6c ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] MinGW: fix diff --no-index /dev/null ... 2009-03-07 20:15 ` Junio C Hamano @ 2009-03-07 20:47 ` Johannes Schindelin 2009-03-07 21:40 ` Junio C Hamano 2009-03-07 21:18 ` Johannes Sixt 1 sibling, 1 reply; 6+ messages in thread From: Johannes Schindelin @ 2009-03-07 20:47 UTC (permalink / raw) To: Junio C Hamano; +Cc: git, Johannes Sixt Hi, On Sat, 7 Mar 2009, Junio C Hamano wrote: > Johannes Schindelin <johannes.schindelin@gmx.de> writes: > > > diff --git a/diff-no-index.c b/diff-no-index.c > > index 0a14268..598687b 100644 > > --- a/diff-no-index.c > > +++ b/diff-no-index.c > > @@ -38,6 +38,10 @@ static int get_mode(const char *path, int *mode) > > > > if (!path || !strcmp(path, "/dev/null")) > > *mode = 0; > > +#ifdef _WIN32 > > + else if (!strcasecmp(path, "nul")) > > + *mode = 0; > > +#endif > > else if (!strcmp(path, "-")) > > *mode = create_ce_mode(0666); > > else if (lstat(path, &st)) > > I had a brief "Huh? -- doesn't this call for an is_dev_null() helper" > moment, but I think you are right that diff-no-index.c is the right place > to special case it. You're right, it needs to be explained in the commit message. So how about this: -- snip -- Unlike other places where a string is compared to /dev/null, in this case do not parse a diff, but rather command line parameters that have possibly been transformed from /dev/null to nul, so that the file can be opened. -- snap -- If you like it, may I ask you to amend the message? > Should this go to 'maint'? Technically, yes, as it is a fix. However, it might not be necessary, as literally all Windows work on Git happens in git/mingw.git, git/mingw/j6t.git and git/mingw/4msysgit.git. Your call. Thanks, Dscho ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] MinGW: fix diff --no-index /dev/null ... 2009-03-07 20:47 ` Johannes Schindelin @ 2009-03-07 21:40 ` Junio C Hamano 0 siblings, 0 replies; 6+ messages in thread From: Junio C Hamano @ 2009-03-07 21:40 UTC (permalink / raw) To: Johannes Schindelin; +Cc: git, Johannes Sixt Johannes Schindelin <Johannes.Schindelin@gmx.de> writes: > Unlike other places where a string is compared to /dev/null, in this case > do not parse a diff, but rather command line parameters that have > possibly been transformed from /dev/null to nul, so that the file can be > opened. > -- snap -- > > If you like it, may I ask you to amend the message? > >> Should this go to 'maint'? > > Technically, yes, as it is a fix. > > However, it might not be necessary, as literally all Windows work on Git > happens in git/mingw.git, git/mingw/j6t.git and git/mingw/4msysgit.git. Yeah, I should have been clearer. Unless msysgit will have a maintenance track for 1.6.1.X, there is no point. Thanks for reading my mind and a clarified message I can use for amending. ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] MinGW: fix diff --no-index /dev/null ... 2009-03-07 20:15 ` Junio C Hamano 2009-03-07 20:47 ` Johannes Schindelin @ 2009-03-07 21:18 ` Johannes Sixt 1 sibling, 0 replies; 6+ messages in thread From: Johannes Sixt @ 2009-03-07 21:18 UTC (permalink / raw) To: Junio C Hamano; +Cc: Johannes Schindelin, git On Samstag, 7. März 2009, Junio C Hamano wrote: > Should this go to 'maint'? I don't think that's necessary. It fixes only that someone literally writes on the Windows command line git diff --no-index nul foo.c when on Unix one would have written git diff --no-index /dev/null foo.c In practice, only the test suite does this ;) -- Hannes ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2009-03-07 21:42 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <cover.1236441065u.git.johannes.schindelin@gmx.de> 2009-03-07 15:51 ` [PATCH] MinGW: fix diff --no-index /dev/null Johannes Schindelin 2009-03-07 19:56 ` Johannes Sixt 2009-03-07 20:15 ` Junio C Hamano 2009-03-07 20:47 ` Johannes Schindelin 2009-03-07 21:40 ` Junio C Hamano 2009-03-07 21:18 ` Johannes Sixt
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).