git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Pull request for msysGit patches

From
Junio C Hamano <gitster@pobox.com>
Date
Sep 28, 2010, 19:10 UTC
Message-ID
<7vocbhsn03.fsf@alter.siamese.dyndns.org>
In-Reply-To
<87ocbitd33.fsf@fox.patthoyts.tk>
Pat Thoyts <patthoyts@users.sourceforge.net> writes:
Show 8 quoted lines
> Junio,
>
> The msysGit tree currently tracks some 50+ patches on top of 'next'. I
> have gathered 42 of these that look good to move upstream. 
> Please pull from
>   git://repo.or.cz/git/mingw/4msysgit.git work/pt/for-junio
> also visible for inspection at
>   http://repo.or.cz/w/git/mingw/4msysgit.git/shortlog/refs/heads/work/pt/for-junio

Sorry, I cannot pull anything based directly on top of 'next'. However, except for the one that touch t/t3032-merge-recursive-options.sh at the tip, the series seem to apply cleanly to the tip of 'master'.

There seem to be many patches that touch outside compat/ area. Have they been reviewed and discussed here already?

A quick and superficial review follows.

---------------------------------------------------------------- abspath.c

@@ -108,10 +108,15 @@ const char *make_nonrelative_path(const char *path)
 		if (strlcpy(buf, path, PATH_MAX) >= PATH_MAX)
 			die("Too long path: %.*s", 60, path);
 	} else {
+		size_t len;
+		const char *fmt;
 		const char *cwd = get_pwd_cwd();
 		if (!cwd)
 			die_errno("Cannot determine the current working directory");
-		if (snprintf(buf, PATH_MAX, "%s/%s", cwd, path) >= PATH_MAX)
+		len = strlen(cwd);
+		/* For cwd c:/, return c:/foo rather than URL-like c://foo */

For the patch to be regression free, the logic described by this comment
requires get_pwd_cmd() to return a string with trailing dir-sep only at
slash.  IOW, if you see any non-root path returned with a trailing dir-sep
for whatever reason, you are changing the behaviour in that case as well,
and that clearly is not "fix at the root level".

But if you label this as "avoid duplicated dir-sep", everything flows
smoothly ;-).

+		fmt = len > 0 && is_dir_sep(cwd[len-1]) ? "%s%s" : "%s/%s";

Please have () around "len > 0 && is_dir_sep(cwd[len-1])" for readability.

+		if (snprintf(buf, PATH_MAX, fmt, cwd, path) >= PATH_MAX)
 			die("Too long path: %.*s", 60, path);

----------------------------------------------------------------
get_home_directory()

The patch looks fine, but the commit log message is way insufficient.  Can
you restate what problem it addresses, and why it is the best solution?

----------------------------------------------------------------
Hide dotfiles

It is somewhat unfortunate that this Windows-only hack needs to touch
cache.h and environment.c.

hidedotfiles may currently be the only platform specific configuration
variable, but we might want to futureproof by abstracting this out,
perhaps by adding a call to platform_core_config() at the end of
git_default_core_config(), provide a default implementation that is a
no-op, and allow platforms to override it, or something like that?

----------------------------------------------------------------
pack-objects.c usage string
connect.c use of unchecked git_getpass()

Good eyes, but these should not be part of the series but applied to
maint.  If possible please send them separately.

----------------------------------------------------------------
compat/regex/regexec.c

Thanks for fixing up my mess ;-)

----------------------------------------------------------------
git-am.sh

This is questionable.  Does this mean that on POSIX boxes I cannot have my
patch mailbox named 0:pt.patch, 1:pt.patch, etc.?

Adding "is_absolute_path" helper that has a different implementation
depending on the platform in git-sh-setup and using it here would limit
the extent of damage?

----------------------------------------------------------------
git-merge-octopus.sh

Transliterating a-z to A-z may happen to work because A-z is A-Z with a
lot of garbage concatenated at the end that won't be used, but it feels
sloppy.

Why isn't upcasing necessary for all the other uses of environment
variables?  For example, we pass reflog action by exporting a variable,
and we use GIT_AUTHOR_NAME and friends to override configuration
variables.  Do they get upcased?

What I am getting at is that this might be just fixing a symptom, and
between applying similar band-aid to many other places and finding out why
undesired upcaing happens and fixing that, I'd rather see the latter done.

----------------------------------------------------------------
git-send-email.perl

Similar comment as is_absolute_path(), although in Perl environment I
suspect we can just use an existing package without adding our own.

----------------------------------------------------------------
t/test-lib.sh

Is "DIFF=${DIFF:-diff}" needed?  How is the existing initialization (in
'maint') of GIT_TEST_CMP working?

----------------------------------------------------------------

I didn't look at tests very deeply.  Other changes outside compat/ that I
didn't mention above looked fine.

Thanks.
Previous: Pat ThoytsNext: Johannes Sixt
Message 2 of 38 in “Pull request for msysGit patches”
  1. Pat ThoytsSep 28, 2010
  2. Junio C HamanoSep 28, 2010
  3. Johannes SixtSep 28, 2010
  4. Junio C HamanoSep 29, 2010
  5. Ævar Arnfjörð BjarmasonSep 28, 2010
  6. Pat ThoytsSep 30, 2010
  7. Ævar Arnfjörð BjarmasonSep 30, 2010
  8. Erik Faye-LundSep 30, 2010
  9. Eric SunshineSep 29, 2010
  10. msysGit patches for upstreamPat Thoyts, Sep 29, 2010
  11. Junio C HamanoSep 29, 2010
  12. 1/2 Make sure that git_getpass() never returns NULLPat Thoyts, Sep 29, 2010
  13. 2/2 Fix typo in pack-objects' usagePat Thoyts, Sep 29, 2010
  14. Johannes SixtSep 28, 2010
  15. Erik Faye-LundSep 28, 2010
  16. Johannes SixtSep 28, 2010
  17. Erik Faye-LundSep 28, 2010
  18. Erik Faye-LundSep 28, 2010
  19. Jonathan NiederSep 28, 2010
  20. Junio C HamanoSep 29, 2010
  21. Pat ThoytsSep 29, 2010
  22. Eric SunshineSep 29, 2010
  23. Junio C HamanoSep 29, 2010
  24. Eric SunshineSep 29, 2010
  25. git-am: fix detection of absolute paths for windowsPat Thoyts, Sep 30, 2010
  26. Johannes SixtOct 1, 2010
  27. git-am: fix detection of absolute paths for windowsPat Thoyts, Sep 30, 2010
  28. 0/4 make open/unlink failures user friendly on windows using retry/abortHeiko Voigt, Nov 7, 2010
  29. 1/4 mingw: move unlink wrapper to mingw.cHeiko Voigt, Nov 7, 2010
  30. 2/4 mingw: work around irregular failures of unlink on windowsHeiko Voigt, Nov 7, 2010
  31. 3/4 mingw: make failures to unlink or move raise a questionHeiko Voigt, Nov 7, 2010
  32. 4/4 mingw: add fallback for rmdir in case directory is in useHeiko Voigt, Nov 7, 2010
  33. Johannes SixtNov 7, 2010
  34. Heiko VoigtNov 7, 2010
  35. Johannes SixtNov 7, 2010
  36. yj2133011Sep 29, 2010
  37. Ramsay JonesSep 29, 2010
  38. Eric SunshineSep 29, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.