From: Jens Lehmann <Jens.Lehmann@web.de>
To: Junio C Hamano <gitster@pobox.com>
Cc: Git Mailing List <git@vger.kernel.org>
Subject: Re: [PATCH] Teach checkout the -n|--dry-run option
Date: Sun, 08 May 2011 13:22:28 +0200 [thread overview]
Message-ID: <4DC67CF4.80901@web.de> (raw)
In-Reply-To: <7vfwoqwby5.fsf@alter.siamese.dyndns.org>
Am 07.05.2011 21:24, schrieb Junio C Hamano:
> Junio C Hamano <gitster@pobox.com> writes:
>
>> In other words, can't the check you need in submodule be scripted around
>> the specific plumbing responsible for the branch switching, which is:
>>
>> $ git read-tree -m HEAD $other_branch
>>
>>> @@ -397,7 +400,7 @@ static int merge_working_tree(struct checkout_opts *opts,
>>>
>>> /* 2-way merge to the new branch */
>>> topts.initial_checkout = is_cache_unborn();
>>> - topts.update = 1;
>>> + topts.update = !opts->dry_run;
>>> topts.merge = 1;
>>> topts.gently = opts->merge && old->commit;
>>> topts.verbose_update = !opts->quiet;
>>
>> What you are doing in this part of your patch is exactly that two-tree
>> form of the "read-tree -m", no?
>
> That is, this would succeed:
>
> $ git reset --hard master
> $ git read-tree --index-output=rubbish -m master next
>
> and these would fail:
>
> $ git reset --hard master
> $ echo >>Makefile
> $ git read-tree --index-output=rubbish -m master next
> error: Entry 'Makefile' not uptodate. Cannot merge.
>
> $ git reset --hard master
> $ echo >>Makefile
> $ git add Makefile
> $ git read-tree --index-output=rubbish -m master next
> error: Entry 'Makefile' would be overwritten by merge. Cannot merge.
Thanks for pointing me to "git read-tree -m". When I saw that a "git
checkout -n" would do exactly what I needed, I stopped looking for
alternatives (especially as I saw that adding -n there would help
other non-submodule use cases as well).
> Having said that, please do not discard your patch. After sleeping on
> this, I started to think that "checkout -n" might be a better interface
> than using the plumbing read-tree in the longer term, especially if you
> can enhance it to handle "checkout -m -n" to check if the local change can
> be merged without conflicts.
I'll see if I can come up with a solution for the "-m -n" case (I stopped
after implementing the checkout branch case I needed to get some feedback
if this thing went into the right direction). And I assume the "git
checkout <pathspec>" case should learn -n too?
> But if the only question you are interested in is "can I switch to that
> branch from the current state of the index and the working tree?", I would
> prefer to see if the script can use "read-tree -m" approach first.
Yup, I will try that.
> We may also want to add "read-tree -n" so that you do not have to specify
> a dummy index output only to prevent from writing the real index over,
> though.
Hmm, wouldn't using "read-tree --index-output=/dev/null" be equivalent to
"read-tree -n"? But nonetheless it might make sense to add the -n option.
next prev parent reply other threads:[~2011-05-08 11:22 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-05-06 22:12 [PATCH] Teach checkout the -n|--dry-run option Jens Lehmann
2011-05-06 22:49 ` Junio C Hamano
2011-05-07 19:24 ` Junio C Hamano
2011-05-08 11:22 ` Jens Lehmann [this message]
2011-05-08 20:50 ` Jens Lehmann
2011-05-08 21:30 ` Junio C Hamano
2011-05-08 21:41 ` Jens Lehmann
2011-05-11 21:50 ` [PATCH] Teach read-tree " Jens Lehmann
2011-05-11 22:47 ` Junio C Hamano
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=4DC67CF4.80901@web.de \
--to=jens.lehmann@web.de \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.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.