From: Junio C Hamano <gitster@pobox.com>
To: Robin Rosenberg <robin.rosenberg@dewire.com>
Cc: Michael J Gruber <git@drmicha.warpmail.net>, git@vger.kernel.org
Subject: Re: [PATCH] RFC Optionally handle symbolic links as copies
Date: Wed, 12 Dec 2012 12:22:23 -0800 [thread overview]
Message-ID: <7vy5h32f7k.fsf@alter.siamese.dyndns.org> (raw)
In-Reply-To: <1141725649.20938344.1355328914240.JavaMail.root@dewire.com> (Robin Rosenberg's message of "Wed, 12 Dec 2012 17:15:14 +0100 (CET)")
Robin Rosenberg <robin.rosenberg@dewire.com> writes:
> I want the copy on checkout. The intent is to change things and
> then commit.
That largely depends on what purpose each symlink is used for in the
project.
Suppose you have a symlink A and another symlink X in the project,
where A points at another path B inside the working tree, and X
points at a path outside, say, /etc/motd. Upon checkout, you make
regular files A and X that store the contents of the files they
point at, and then you edit A and X.
Now, what should happen on the next "git add A X"?
* Perhaps it (or any step before "git add", or something even
outside git) should notice that you modified A that is supposed
to represent a copy of B but their contents have drifted. It
should raise a red flag, or take a remedial action, no?
* Perhaps it should copy the updated contents in A to B and run
"git add" on that one instead, without changing anything else?
* Imagine a project with many template files B, C, ..., where A
points at "the default template". You may be designating a
different template file as the new default. On a symlink-capable
system you would just do "rm -f A && ln -s C A", but because you
chose to make a copy of B and store it as a regular file in A, a
natural way to update it may be to do "cp C A".
Would you find another file C in the working tree that may be
different from B that has the same contents as A, and update the
symbolic link A to point at C instead? Do so only with the
contents of A and all the other files in the working tree? What
if there is another template file identical to C?
I didn't even touched the cases where you have to deal with your
updates to X.
This is looking more and more outside the scope of Git to me.
next prev parent reply other threads:[~2012-12-12 20:22 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-12-05 22:46 [PATCH] RFC Optionally handle symbolic links as copies Robin Rosenberg
2012-12-05 23:51 ` Junio C Hamano
2012-12-06 1:23 ` Robin Rosenberg
2012-12-12 14:43 ` Michael J Gruber
2012-12-12 16:15 ` Robin Rosenberg
2012-12-12 20:22 ` Junio C Hamano [this message]
2012-12-06 6:59 ` Johannes Sixt
2012-12-06 11:51 ` Robin Rosenberg
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=7vy5h32f7k.fsf@alter.siamese.dyndns.org \
--to=gitster@pobox.com \
--cc=git@drmicha.warpmail.net \
--cc=git@vger.kernel.org \
--cc=robin.rosenberg@dewire.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).