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

[PATCH v2] Makefile: Fix CDPATH problem

From
Jonathan Nieder <jrnieder@gmail.com>
Date
Mar 20, 2010, 00:06 UTC
Message-ID
<20100320000615.GA17761@progeny.tock>
In-Reply-To
<7vd3yz513z.fsf@alter.siamese.dyndns.org>

If CDPATH is set, "cd" prints its destination to stdout, causing the common (cd a && tar cf - .) | (cd b && tar xf -) idiom to fail. For example:

 make -C templates DESTDIR='' install
 make[1]: Entering directory `/users/e477610/exptool/src/git-1.7.0.2/templates'
 install -d -m 755 '/home/e477610/exptool/share/git-core/templates'
 (cd blt && gtar cf - .) | \
	(cd '/home/e477610/exptool/share/git-core/templates' && umask 022 && gtar xof -)
 gtar: This does not look like a tar archive

Most git scripts already protect against use of CDPATH through git-sh-setup, but the Makefile doesn’t.

Reported-by: Michael Cox <mhcox@bluezoosoftware.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
> Eh, the rationale and the in-code comment need to be fixed.  The issue is
> not "taking us to random places", but "reporting the name of the random
> place in its standard output".
That makes more sense.  Thanks.
> But other than that, this is something we have seen on the list a few
> times, and I think it is about time to do this.
Here’s an updated patch.
 Makefile |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)
diff --git a/Makefile b/Makefile
index 4387d42..98372eb 100644
--- a/Makefile
+++ b/Makefile
@@ -317,6 +317,12 @@ SCRIPT_PYTHON =
 SCRIPT_SH =
 TEST_PROGRAMS =
 
+# Having this variable in your environment would break pipelines because
+# you cause "cd" to echo its destination to stdout.  It can also take
+# scripts to unexpected places.  If you like CDPATH, define it for your
+# interactive shell sessions without exporting it.
+unexport CDPATH
+
 SCRIPT_SH += git-am.sh
 SCRIPT_SH += git-bisect.sh
 SCRIPT_SH += git-difftool--helper.sh
-- 
1.7.0
Previous: Junio C Hamano
Message 8 of 8 in “Error building installing on Redhat Linux Server release 5.3 (Tikanga)”
  1. Michael CoxMar 19, 2010
  2. Jonathan NiederMar 19, 2010
  3. Jonathan NiederMar 19, 2010
  4. Michael CoxMar 19, 2010
  5. Michael CoxMar 19, 2010
  6. Makefile: Fix CDPATH problemJonathan Nieder, Mar 19, 2010
  7. Junio C HamanoMar 19, 2010
  8. Makefile: Fix CDPATH problemJonathan Nieder, Mar 20, 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.