From: Jonathan Nieder <jrnieder@gmail.com>
To: Drew Northup <drew.northup@maine.edu>
Cc: Felipe Contreras <felipe.contreras@gmail.com>, git@vger.kernel.org
Subject: Re: [PATCH] merge: default to @{upstream}
Date: Fri, 28 Jan 2011 11:56:10 -0600 [thread overview]
Message-ID: <20110128175609.GA27118@burratino> (raw)
In-Reply-To: <1296233099.12855.14.camel@drew-northup.unet.maine.edu>
Drew Northup wrote:
> On Fri, 2011-01-28 at 18:17 +0200, Felipe Contreras wrote:
>> So 'git merge' is 'git merge @{upstream}' instead of 'git merge -h';
>> it's better to do something useful.
[...]
>> --- a/builtin/merge.c
>> +++ b/builtin/merge.c
>> @@ -983,9 +983,11 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
>> if (!allow_fast_forward && fast_forward_only)
>> die("You cannot combine --no-ff with --ff-only.");
>>
>> - if (!argc)
>> - usage_with_options(builtin_merge_usage,
>> - builtin_merge_options);
>> + if (!argc) {
>> + /* argv[argc] should be NULL, so we can hijack it */
>> + argv[0] = "@{u}";
[...]
> Honestly, I'd prefer that this NOT be merged in. When I mess up the
> command line I am typing I don't want some sort of hidden magic to kick
> in--I want it to tell me that I did something stupid by printing out the
> help message.
I generally have some sympathy for that point of view (especially
given the "because we can" commit message). In this case, can you
think of an example where one would type "git merge" without a
branchname argument and expect it to do something else?
- Never used "git merge" before, trying it for the first time.
In this case, I think merging from upstream is a good behavior,
relatively consistent with "git pull".
- In a script trying to do an octopus, in the special case of no
extra parents. Rough plumbing equivalent:
set --
git merge-recursive HEAD -- HEAD "$@"
tree=$(git write-tree)
git fetch . "$@" 2>/dev/null
git fmt-merge-msg <.git/FETCH_HEAD |
git commit-tree $tree \
$(git merge-base --independent HEAD "$@" | sed 's/^/-p ')
The porcelain "git fetch" is used to populate .git/FETCH_HEAD (the
fmt-merge-msg manual doesn't explain any other way). Maybe it
would be better to write the log message by hand. In any case, the
porcelain "git fetch" defeats us --- "git fetch ." means to fetch
the default refspec instead of no branches.
It might be nice to have a better way to format merge messages
(like "git fmt-merge-msg --refspec "$@"?) so we can give better
advice to the author of the script that uses "git merge $@" and
already breaks in the no-heads case.
- Started typing a "git merge" command with lots of switches and
forgot to type the branch name. It might help to print some output
'defaulting to branch <foo>' so the operator can notice the
mistake.
Other nits: documentation? tests? The rest of cmd_merge does not
rely on argv[argc] being NULL, but it might make sense to set argv[1]
to NULL anyway for futureproofing.
Thanks.
Jonathan
next prev parent reply other threads:[~2011-01-28 17:56 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-01-28 16:17 [PATCH] merge: default to @{upstream} Felipe Contreras
2011-01-28 16:44 ` Drew Northup
2011-01-28 17:53 ` Felipe Contreras
2011-01-28 17:56 ` Jonathan Nieder [this message]
2011-01-28 18:46 ` Felipe Contreras
2011-01-30 21:51 ` Jonathan Nieder
2011-01-28 19:53 ` Bert Wesarg
2011-01-28 21:41 ` Martin von Zweigbergk
2011-01-31 1:55 ` Miles Bader
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=20110128175609.GA27118@burratino \
--to=jrnieder@gmail.com \
--cc=drew.northup@maine.edu \
--cc=felipe.contreras@gmail.com \
--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 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).