threads / discuss / 48432

regarding fix on "git clone $there $here"

Subject: regarding fix on "git clone $there $here"

## tl;dr

4 messages between May 9, 2018 and May 9, 2018.

replies: 3people: 3as markdown or json

Leslie Wang· May 9, 2018, 05:25 UTC · lore
Dear git experts,
Recently we try to upgrade ubuntu from 17.10 to 18.04, then we found one inconsistent behavior on git clone.
At 2.14.1 or 2.15.1, if I run command like 
 - mkdir /tmp/111
 - git clone git@github.com:111/111 /tmp/111
because it will failure, then /tmp/111 will be removed automatically.
However, at latest 2.17.0 which is part of ubuntu 18.04, seems like git clone failure will not auto remove this folder. I notice 2.16.2 and 2.17.0 release note includes this fix. So just wonder to know if prior behavior was think of bug, and this fix has change the behavior. 
 * "git clone $there $here" is allowed even when here directory exists
   as long as it is an empty directory, but the command incorrectly
   removed it upon a failure of the operation.

Thanks & Regards Leslie Wang

Jeff King· May 9, 2018, 06:41 UTC · re: Leslie Wang · lore

Re: regarding fix on "git clone $there $here"

On Tue, May 08, 2018 at 10:25:58PM -0700, Leslie Wang wrote:
Show 17 quoted lines
> Recently we try to upgrade ubuntu from 17.10 to 18.04, then we found
> one inconsistent behavior on git clone.
> 
> At 2.14.1 or 2.15.1, if I run command like 
>  - mkdir /tmp/111
>  - git clone git@github.com:111/111 /tmp/111
> 
> because it will failure, then /tmp/111 will be removed automatically.
> 
> However, at latest 2.17.0 which is part of ubuntu 18.04, seems like
> git clone failure will not auto remove this folder. I notice 2.16.2
> and 2.17.0 release note includes this fix. So just wonder to know if
> prior behavior was think of bug, and this fix has change the behavior. 
> 
>  * "git clone $there $here" is allowed even when here directory exists
>    as long as it is an empty directory, but the command incorrectly
>    removed it upon a failure of the operation.

Right, the old behavior was considered a bug. Git didn't create the directory, so when rolling back its changes on failure, it shouldn't delete it either.

-Peff
Junio C Hamano· May 9, 2018, 06:44 UTC · re: Leslie Wang · lore

Re: regarding fix on "git clone $there $here"

Leslie Wang <qiwa@pensando.io> writes:
Show 5 quoted lines
> At 2.14.1 or 2.15.1, if I run command like 
>  - mkdir /tmp/111
>  - git clone git@github.com:111/111 /tmp/111
>
> because it will failure, then /tmp/111 will be removed automatically.

Yes, this was a (longstanding) bug that nobody bothered to fix for a long time. As "git clone" did not create /tmp/111 but it was given to it by the external world, it shouldn't remove it upon failure. Of course, if you omit the "mkdir" in the above sequence and let "git clone" create /tmp/111, tne Git will remove it upon failure as part of the clean-up.

Leslie Wang· May 9, 2018, 16:47 UTC · re: Junio C Hamano · lore

Re: regarding fix on "git clone $there $here"

Thanks for the confirmation. It is very helpful!

Best Regards Leslie Wang

Show 17 quoted lines
> On May 8, 2018, at 11:44 PM, Junio C Hamano <gitster@pobox.com> wrote:
> 
> Leslie Wang <qiwa@pensando.io> writes:
> 
>> At 2.14.1 or 2.15.1, if I run command like 
>> - mkdir /tmp/111
>> - git clone git@github.com:111/111 /tmp/111
>> 
>> because it will failure, then /tmp/111 will be removed automatically.
> 
> Yes, this was a (longstanding) bug that nobody bothered to fix for a
> long time.  As "git clone" did not create /tmp/111 but it was given
> to it by the external world, it shouldn't remove it upon failure.
> Of course, if you omit the "mkdir" in the above sequence and let
> "git clone" create /tmp/111, tne Git will remove it upon failure as
> part of the clean-up.
> 

← back to recent threads