# [PATCH] git-am: Don't accept an mbox on stdin of we already have a .dotest directory

3 messages from 2006-07-19 to 2006-07-20. Participants: Lukas Sandström, Petr Baudis.
Thread: https://gitlist.dev/t/4920

## Lukas Sandström, 2006-07-19 20:28

Subject: [PATCH] git-am: Don't accept an mbox on stdin of we already have a .dotest directory
Message-ID: <44BE95D0.9090708@etek.chalmers.se>
URL: https://gitlist.dev/e/44BE95D0.9090708%40etek.chalmers.se

```
Signed-off-by: Lukas Sandström <lukass@etek.chalmers.se>
---

It makes no sense to accept an mbox via stdin when we
won't accept it on the commandline.

The patch helps the following scenario:

# git init-db
"add file1 with content"
# git checkout -b apply
"edit file1 && commit"

# git checkout -b conflict master
"edit file1 && commit"

# git checkout -b ok master
"add file2"

# git checkout apply
# git format-patch -k -3 master..conflict | git am -k -3
=> git-am fails with a conflict message
# git reset --hard

# git format-patch -k -3 master..ok | git am -k -3
=> git am fails with the same conflict message as above,
=> since it's trying to apply the old .dotest directory

With the patch it complains about an old .dotest
directory instead.

 git-am.sh |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/git-am.sh b/git-am.sh
index 3a129e0..04f0119 100755
--- a/git-am.sh
+++ b/git-am.sh
@@ -156,8 +156,10 @@ fi
 
 if test -d "$dotest"
 then
-	test ",$#," = ",0," ||
-	die "previous dotest directory $dotest still exists but mbox given."
+	if test ",$#," != ",0," || ! tty -s
+	then
+		die "previous dotest directory $dotest still exists but mbox given."
+	fi
 	resume=yes
 else
 	# Make sure we are not given --skip nor --resolved
-- 
1.4.1.g59817

```

## Petr Baudis, 2006-07-20 14:33

Subject: Re: [PATCH] git-am: Don't accept an mbox on stdin of we already have a .dotest directory
Message-ID: <20060720143353.GK13776@pasky.or.cz>
URL: https://gitlist.dev/e/20060720143353.GK13776%40pasky.or.cz
In-Reply-To: <44BE95D0.9090708@etek.chalmers.se>

```
Dear diary, on Wed, Jul 19, 2006 at 10:28:00PM CEST, I got a letter
where Lukas Sandström <lukass@etek.chalmers.se> said that...
> Signed-off-by: Lukas Sandström <lukass@etek.chalmers.se>
> ---

Please don't be afraid of putting stuff to commit message. It can only
improve things. :-)

> # git format-patch -k -3 master..conflict | git am -k -3
> => git-am fails with a conflict message
> # git reset --hard
> 
> # git format-patch -k -3 master..ok | git am -k -3
> => git am fails with the same conflict message as above,
> => since it's trying to apply the old .dotest directory
> 
> With the patch it complains about an old .dotest
> directory instead.

I think this rather means that git reset --hard should clear the .dotest
directory, or something (perhaps just warn)...

> -	test ",$#," = ",0," ||
> +	if test ",$#," != ",0," || ! tty -s

...but this looks like a horrible idea. Does this mean that git-am can't
be now ran without a terminal? (E.g. in a cron/at job, inside a procmail
rule etc.) That's bad.

-- 
				Petr "Pasky" Baudis
Stuff: http://pasky.or.cz/
Snow falling on Perl. White noise covering line noise.
Hides all the bugs too. -- J. Putnam

```

## Lukas Sandström, 2006-07-20 19:35

Subject: Re: [PATCH] git-am: Don't accept an mbox on stdin of we already have a .dotest directory
Message-ID: <44BFDAFD.10101@etek.chalmers.se>
URL: https://gitlist.dev/e/44BFDAFD.10101%40etek.chalmers.se
In-Reply-To: <20060720143353.GK13776@pasky.or.cz>

```
Petr Baudis wrote:
> Dear diary, on Wed, Jul 19, 2006 at 10:28:00PM CEST, I got a letter
> where Lukas Sandström <lukass@etek.chalmers.se> said that...
>> Signed-off-by: Lukas Sandström <lukass@etek.chalmers.se>
>> ---
> 
> Please don't be afraid of putting stuff to commit message. It can only
> improve things. :-)
> 
>> # git format-patch -k -3 master..conflict | git am -k -3
>> => git-am fails with a conflict message
>> # git reset --hard
>>
>> # git format-patch -k -3 master..ok | git am -k -3
>> => git am fails with the same conflict message as above,
>> => since it's trying to apply the old .dotest directory
>>
>> With the patch it complains about an old .dotest
>> directory instead.
> 
> I think this rather means that git reset --hard should clear the .dotest
> directory, or something (perhaps just warn)...

But the .dotest directory is user-selectable in git-am.

> 
>> -	test ",$#," = ",0," ||
>> +	if test ",$#," != ",0," || ! tty -s
> 
> ...but this looks like a horrible idea. Does this mean that git-am can't
> be now ran without a terminal? (E.g. in a cron/at job, inside a procmail
> rule etc.) That's bad.
> 

This would only stop it from running without a terminal if you have an old
.dotest directory lying around, ie. you already have a failed am-session.
git-am wouldn't work in this case before either, all the patch does is to
give a better error-message.

/Lukas

```
