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
From: Jeff King <hidden> Date: 2016-06-15 22:44:11
On Thu, Feb 07, 2008 at 07:09:54PM -0800, Ian Dees wrote:
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...)
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
From: Jakub Narebski <hidden> Date: 2016-06-15 22:44:11
"Ian Dees" [off-list ref] writes:
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.
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