From: Junio C Hamano <gitster@pobox.com>
To: Alex Cornejo <acornejo@gmail.com>
Cc: git@vger.kernel.org
Subject: Re: git init with template dir
Date: Fri, 12 Jun 2015 09:13:16 -0700 [thread overview]
Message-ID: <xmqqeglgewgz.fsf@gitster.dls.corp.google.com> (raw)
In-Reply-To: <loom.20150612T175402-182@post.gmane.org> (Alex Cornejo's message of "Fri, 12 Jun 2015 15:59:51 +0000 (UTC)")
Alex Cornejo <acornejo@gmail.com> writes:
> Junio C Hamano <gitster <at> pobox.com> writes:
>
>> Hmmm, I do not seem to be able to do this, though.
>>
>> $ ln -s $HOME/g/share/git-core/templates /var/tmp/git-template
>> $ cd /var/tmp
>> $ git init --template=/var/tmp/git-template new
>> $ find new/.git -type l
>> ... nothing ...
>
> Thanks for your prompt response Juno.
>
> That make sense. The fact that you were unable to reproduce this tells
> me that there is probably something fishy/unexpected with the
> environment in which I tried this (which is not too surprising, given
> that I was doing it inside a linux container, inside a virtual machine,
> where both of these were setup using a scripts which ultimately failed
> after the git init step, due to the symlink behavior I described, but
> most likely this is my own fault).
I wouldn't call that your "fault". After all, as more people want
to run Git in different environments, we would want to make sure Git
runs correctly for them.
I quickly re-scanned what we do inside "git init" and how we
populate the repository from templates. This happens all in
builtin/init-db.c:
- copy_templates() does opendir(), so it should not have mattered
that I used /var/tmp/git-template that is a symbolic link to a
real location in my quick reproduction attempt;
- it calls a recursive copy_templates_1() with that directory
handle it opened for the template directory. Each entry it finds
are inspected and
- real directories are recursed into;
- files are copied; and
- symlinks are recreated.
So if I instead made a new directory /var/tmp/git-template/ and then
populated it with a bunch of symbolic links e.g. hooks, description,
etc., that points at their real location, I would have seen that the
resulting repository populated with symbolic links.
And I think that is an expected behaviour.
But if "git init" made bunch of symbolic links only because it was
given a symbolic link to the real directory via its --template
parameter, that _is_ unexpected, and we may want to dig deeper to
correct it.
prev parent reply other threads:[~2015-06-12 16:13 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-12 7:09 git init with template dir Alex Cornejo
2015-06-12 15:27 ` Junio C Hamano
2015-06-12 15:59 ` Alex Cornejo
2015-06-12 16:13 ` Junio C Hamano [this message]
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=xmqqeglgewgz.fsf@gitster.dls.corp.google.com \
--to=gitster@pobox.com \
--cc=acornejo@gmail.com \
--cc=git@vger.kernel.org \
/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.