All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jonathan Nieder <jrnieder@gmail.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: Michael Cox <mhcox@bluezoosoftware.com>, git@vger.kernel.org
Subject: [PATCH v2] Makefile: Fix CDPATH problem
Date: Fri, 19 Mar 2010 19:06:15 -0500	[thread overview]
Message-ID: <20100320000615.GA17761@progeny.tock> (raw)
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

  reply	other threads:[~2010-03-20  0:05 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-03-19 21:36 Error building installing on Redhat Linux Server release 5.3 (Tikanga) Michael Cox
     [not found] ` <7veijgc6md.fsf@alter.siamese.dyndns.org>
2010-03-19 22:25   ` Michael Cox
2010-03-19 22:51     ` Michael Cox
2010-03-19 23:40     ` [PATCH] Makefile: Fix CDPATH problem Jonathan Nieder
2010-03-19 23:43       ` Junio C Hamano
2010-03-20  0:06         ` Jonathan Nieder [this message]
2010-03-19 22:57 ` Error building installing on Redhat Linux Server release 5.3 (Tikanga) Jonathan Nieder
2010-03-19 22:59   ` Jonathan Nieder

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20100320000615.GA17761@progeny.tock \
    --to=jrnieder@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=mhcox@bluezoosoftware.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.