Re: [PATCH] Teach checkout the -n|--dry-run option
- From
Junio C Hamano <gitster@pobox.com>
- Date
- May 7, 2011, 19:24 UTC
- Message-ID
- <7vfwoqwby5.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <7vhb97xx5g.fsf@alter.siamese.dyndns.org>
Junio C Hamano <gitster@pobox.com> writes:
Show 17 quoted lines
> 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.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.
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.
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.