From: Jeff Garzik <jeff@garzik.org>
To: Junio C Hamano <junkio@cox.net>
Cc: git@vger.kernel.org, Ryan Anderson <ryan@michonline.com>
Subject: Re: git 1.4.0 usability problem
Date: Sun, 18 Jun 2006 19:01:15 -0400 [thread overview]
Message-ID: <4495DB3B.10403@garzik.org> (raw)
In-Reply-To: <7vbqsqdru0.fsf@assigned-by-dhcp.cox.net>
Junio C Hamano wrote:
> Jeff Garzik <jeff@garzik.org> writes:
>
>> Here is how to reproduce:
>
> This is not related to the "not clobbering untracked files"
> safety valve under discussion, but one thing I noticed.
>
>> git clone -l $url/torvalds/linux-2.6.git tmp-2.6
>> cd tmp-2.6
>> cp .git/refs/tags/v2.6.12 .git/refs/heads/tmp
>> git checkout -f tmp
>
> This should never have been supported. At this point tmp is a
> tag object that is under heads/ -- a definite no-no. We should
> make checkout more careful to complain about it.
>
> Doing
>
> git update-ref refs/heads/tmp $(git rev-parse v2.6.12^0)
>
> instead of "cp" is kosher, and
>
> git-rev-parse v2.6.12^0 >.git/refs/heads/tmp
>
> is OK under the current implementation of refs.
Sorry about that. The contrived example produced the same results as
the real-world example (updating jgarzik/{libata-dev,scsilun-2.6}.git
branches).
>> git pull . master
>> # watch OBVIOUS FAST-FORWARD MERGE complain about untracked
>> # working tree files
>
> In any case, here is a patch I think would alleviate your
> original problem.
>
> Sorry for the trouble. I really did not want to disrupt the
> workflow of old timers in the name of making it safer for new
> people. Could you comment on whether this is an acceptable
> approach?
>
> -- >8 --
> [PATCH] Conditionally loosen "no clobber untracked files" safety valve.
>
> This introduces a new configuration item "core.oktoclobber" to
> control how untracked working tree file is handled during branch
> switching.
>
> The safety valve introduced during 1.4.0 development cycle
> refrains from checking out a file that exists in the working
> tree, not in the current HEAD tree and exists in the branch we
> are switching to, in order to prevent accidental and
> irreversible lossage of user data. This can be controlled by
> having core.oktoclobber configuration item:
I'm a bit under the weather today, so I must defer thinking about this.
:) But if what Ryan says is true, about simply needing to ditch the
"-f" argument I habitually pass to 'git checkout', would that alleviate
the need for a patch?
FWIW, my workflow is
cd /repos
cd linux-2.6
git pull
cd ../libata-dev
git checkout -f master # guarantee any WIP goes away
git pull ../linux-2.6 # update vanilla branch
git checkout -f upstream# switch to working branch,
# guarantee any WIP goes away.
git pull . master # pull latest upstream updates
build/test/etc.
git checkout -f sii-m15w # switch to topic-specific branch,
# whose parent is always #upstream
git pull . upstream
build/test/etc.
repeat for several topics (on-going devel branches)
git checkout -f -b ALL upstream # create everything-together
# test branch
git pull . sii-m15w
git pull . topicB
git pull . topicC
build/test/etc.
git checkout -f master
./push # calls 'git push --force --all $url'
More tomorrow,
Jeff
next prev parent reply other threads:[~2006-06-18 23:01 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-06-18 13:40 git 1.4.0 usability problem Jeff Garzik
2006-06-18 16:43 ` Ryan Anderson
2006-06-18 22:27 ` Ryan Anderson
2006-06-18 19:30 ` Junio C Hamano
2006-06-18 22:25 ` Junio C Hamano
2006-06-18 23:01 ` Jeff Garzik [this message]
2006-06-19 3:11 ` Junio C Hamano
2006-06-20 8:36 ` Jeff Garzik
2006-06-20 9:16 ` Ryan Anderson
2006-06-20 9:35 ` Junio C Hamano
2006-06-20 9:50 ` [PATCH] checkout -f: do not leave untracked working tree files Junio C Hamano
2006-06-20 11:01 ` Santi Béjar
2006-06-20 11:18 ` Junio C Hamano
2006-06-20 11:27 ` Alexander Litvinov
2006-06-20 11:51 ` Junio C Hamano
2006-06-20 12:08 ` Alexander Litvinov
2006-06-20 14:07 ` Carl Worth
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=4495DB3B.10403@garzik.org \
--to=jeff@garzik.org \
--cc=git@vger.kernel.org \
--cc=junkio@cox.net \
--cc=ryan@michonline.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 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.