threads / discuss / 11958

Completion message for git-clone?

Subject: Completion message for git-clone?

## tl;dr

4 messages between Feb 8, 2008 and Feb 8, 2008.

replies: 3people: 3as markdown or json

Ian Dees· Feb 8, 2008, 03:09 UTC · lore
Hi, all.  Upon cloning a repository, the initial message reads:
  Initialized empty Git repository in path/to/new-repo/.git
  0 blocks

I'd wager "empty" means, "empty because Git is about to populate it." Even so, this wording could be a bit surprising to new adopters, especially coupled with the "0 blocks" suffix (is it really creating hardlinks on NTFS?). The impression is that the clone didn't work. The impression is, of course, eventually dispelled by looking inside the new directory. Is there a way to clarify the overall status of the clone operation?

One other minor thing I noticed while futzing with clones: if you try to clone an empty repository, you get the same "Initialized empty repository" message, even though no such second directory is created. I'm not suggesting Git should suddenly start allowing empty cloning, but perhaps a "Empty repository; skipping clone" message would be helpful.

--Ian
Jeff King· Feb 8, 2008, 08:29 UTC · re: Ian Dees · lore

Re: Completion message for git-clone?

On Thu, Feb 07, 2008 at 07:09:54PM -0800, Ian Dees wrote:
Show 10 quoted lines
>   Initialized empty Git repository in path/to/new-repo/.git
>   0 blocks
> 
> I'd wager "empty" means, "empty because Git is about to populate it."
> Even so, this wording could be a bit surprising to new adopters,
> especially coupled with the "0 blocks" suffix (is it really creating
> hardlinks on NTFS?).  The impression is that the clone didn't work.
> The impression is, of course, eventually dispelled by looking inside
> the new directory.  Is there a way to clarify the overall status of
> the clone operation?

The '0 blocks' actually comes from cpio, because it's hardlinking. I complained about this when it first appeared, but getting cpio to print something sane is a bit tricky. However, there has been talk of making git-clone a builtin in the near future, and I suspect it will be much easier to generate more user-friendly muessages then. So it is probably simplest to hold your breath and see what comes of that effort (though I can't seem to find any mention of it in the archives...)

Show 6 quoted lines
> One other minor thing I noticed while futzing with clones: if you try
> to clone an empty repository, you get the same "Initialized empty
> repository" message, even though no such second directory is created.
> I'm not suggesting Git should suddenly start allowing empty cloning,
> but perhaps a "Empty repository; skipping clone" message would be
> helpful.

What version are you using? This should be fixed in v1.5.4 (see commit ef4cffde).

-Peff
Jakub Narebski· Feb 8, 2008, 10:01 UTC · re: Ian Dees · lore

Re: Completion message for git-clone?

"Ian Dees" <undees@gmail.com> writes:
Show 12 quoted lines
> Hi, all.  Upon cloning a repository, the initial message reads:
> 
>   Initialized empty Git repository in path/to/new-repo/.git
>   0 blocks
> 
> I'd wager "empty" means, "empty because Git is about to populate it."
> Even so, this wording could be a bit surprising to new adopters,
> especially coupled with the "0 blocks" suffix (is it really creating
> hardlinks on NTFS?).  The impression is that the clone didn't work.
> The impression is, of course, eventually dispelled by looking inside
> the new directory.  Is there a way to clarify the overall status of
> the clone operation?

This is caused by the fact that for now git-clone is a shell script, which creates empty repository using git-init (The "Initialized..." message is from git-init), then configures it and populates it. For local clones it uses cpio for hardlinking: the "0 blocks" is from cpio.

It shouldn't be hard to add message which would confirm successful completion of the clone if it is local clone; the messages from git-fetch are I think enough indication that clone succeeded... but perhaps we would want to add final message anyway.

Nevertheless git-clone waits to be rewritten in C anyway, so
there is no much initiative to improve shell version. The stumbling
blocks are as far as I can remember moving detection of which branch
is currently checked out to git-remote, and optionally adding
symbolic-ref extension to git transfer protocol for git to not have to
guess which branch is HEAD.
 
Show 6 quoted lines
> One other minor thing I noticed while futzing with clones: if you try
> to clone an empty repository, you get the same "Initialized empty
> repository" message, even though no such second directory is created.
> I'm not suggesting Git should suddenly start allowing empty cloning,
> but perhaps a "Empty repository; skipping clone" message would be
> helpful.

$ git clone a b Initialized empty Git repository in /tmp/b/.git/ fatal: cannot clone empty repository $ git --version git version 1.5.4

Perhaps git should check if there is anything to clone _before_ git-init, or do not remove empty directory after failing to fetch.

-- 
Jakub Narebski
Poland
ShadeHawk on #git
Ian Dees· Feb 8, 2008, 16:23 UTC · re: Jakub Narebski · lore

Re: Completion message for git-clone?

Hi, all.
Thanks, Jeff and Jakub, for the clarifications.
Jakub writes:
> Nevertheless git-clone waits to be rewritten in C anyway, so
> there is no much initiative to improve shell version

I agree with you. If it's about to be replaced, there's not much point in making a wording change to the shell script.

> Perhaps git should check if there is anything to clone _before_
> git-init, or do not remove empty directory after failing to fetch.

I'm not sure that's necessary, as long as that new message is there in 1.5.4. I'll hang tight for my distro to pick it up.

--Ian

← back to recent threads