From: Junio C Hamano <gitster@pobox.com>
To: Jens Lehmann <Jens.Lehmann@web.de>
Cc: Antonin Hildebrand <antonin@hildebrand.cz>, git@vger.kernel.org
Subject: Re: contrib/workdir/git-new-workdir broken in 1.7.10 after introducing gitfiles
Date: Sat, 21 Apr 2012 21:41:23 -0700 [thread overview]
Message-ID: <xmqqy5poxtsc.fsf@junio.mtv.corp.google.com> (raw)
In-Reply-To: <xmqq397wzwwd.fsf@junio.mtv.corp.google.com> (Junio C. Hamano's message of "Sat, 21 Apr 2012 12:51:14 -0700")
Junio C Hamano <gitster@pobox.com> writes:
> As you analyzed correctly, core.worktree lets a GIT_DIR to declare that
> there is a single working tree associated with it. It fundamentally is
> incompatible with new-workdir, which is a hack to let more than one
> working tree associated with a single GIT_DIR.
>
> I however do not think a simplistic "unset core.worktree" is a good
> suggestion, though, as we do not know why the original repository has
> that variable set pointing at somewhere. Blindly removing it will break
> the use of the original repository. If somebody _really_ wants to use
> new-workdir for whatever reason in such a setting, I would imagine that
> doing something like this:
> ...
> may work.
I am too lazy to try it out myself, but a hack something along the line
of the attached patch _might_ turn out to work well.
At least, it gives an incentive to people to update to more recent
versions of git ;-) I dunno.
-- >8 --
Subject: new-workdir: use its own config file
Instead of letting a new workdir share the same config, we simply
include the original config and override core.worktree in it. This
obviously changes the behaviour from the traditional workdir, by making
any update to the config in a workdir private to that workdir and not
reflected back to the original repository. Because a workdir is
supposed to be just a peek only window to check out a branch that is
different from the main working tree, and you are not expected to modify
the config file in any way (e.g. you do not create a new branch with
remote configuration in a workdir), it may not be a huge issue.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
contrib/workdir/git-new-workdir | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/contrib/workdir/git-new-workdir b/contrib/workdir/git-new-workdir
index 75e8b25..1d49258 100755
--- a/contrib/workdir/git-new-workdir
+++ b/contrib/workdir/git-new-workdir
@@ -63,7 +63,7 @@ mkdir -p "$new_workdir/.git" || die "unable to create \"$new_workdir\"!"
# create the links to the original repo. explicitly exclude index, HEAD and
# logs/HEAD from the list since they are purely related to the current working
# directory, and should not be shared.
-for x in config refs logs/refs objects info hooks packed-refs remotes rr-cache svn
+for x in refs logs/refs objects info hooks packed-refs remotes rr-cache svn
do
case $x in
*/*)
@@ -77,6 +77,12 @@ done
cd "$new_workdir"
# copy the HEAD from the original repository as a default branch
cp "$git_dir/HEAD" .git/HEAD
+cat >".git/config" <<EOF
+[include]
+ path = "$git_dir/config"
+[core]
+ worktree = "$(pwd)"
+EOF
# checkout the branch (either the same as HEAD from the original repository, or
# the one that was asked for)
git checkout -f $branch
next prev parent reply other threads:[~2012-04-22 4:42 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-04-20 20:16 contrib/workdir/git-new-workdir broken in 1.7.10 after introducing gitfiles Antonin Hildebrand
2012-04-21 18:45 ` Jens Lehmann
2012-04-21 19:51 ` Junio C Hamano
2012-04-22 3:56 ` Antonin Hildebrand
2012-04-22 4:41 ` Junio C Hamano [this message]
2012-04-22 18:32 ` Jens Lehmann
2012-04-22 18:58 ` Mark Levedahl
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=xmqqy5poxtsc.fsf@junio.mtv.corp.google.com \
--to=gitster@pobox.com \
--cc=Jens.Lehmann@web.de \
--cc=antonin@hildebrand.cz \
--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.