git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jonathan Nieder <jrnieder@gmail.com>
To: "Carlos Martín Nieto" <cmn@elego.de>
Cc: git@vger.kernel.org
Subject: Re: [PATCH] branch: add -u as a shortcut for --set-upstream
Date: Fri, 6 Jul 2012 10:32:39 -0500	[thread overview]
Message-ID: <20120706153239.GA29362@burratino> (raw)
In-Reply-To: <1341475035-14310-1-git-send-email-cmn@elego.de>

Hi Carlos,

Carlos Martín Nieto wrote:

> Add this shortcut just like git-push has it.
[...]
> --- a/builtin/branch.c
> +++ b/builtin/branch.c
> @@ -724,7 +724,7 @@ int cmd_branch(int argc, const char **argv, const char *prefix)
>  		OPT__QUIET(&quiet, "suppress informational messages"),
>  		OPT_SET_INT('t', "track",  &track, "set up tracking mode (see git-pull(1))",
>  			BRANCH_TRACK_EXPLICIT),
> -		OPT_SET_INT( 0, "set-upstream",  &track, "change upstream info",
> +		OPT_SET_INT('u', "set-upstream",  &track, "change upstream info",
>  			BRANCH_TRACK_OVERRIDE),

I think this is a bad idea.  The --set-upstream option is confusing:

	$ git branch --set-upstream=foo
	error: option 'set-upstream' takes no value
	$ ???

-u to set the corresponding upstream branch at the same time as
creating a branch, analagous to "git push -u" might seem intuitive:

	# create foo branch, setting its upstream at the same time
	git branch -u foo origin/foo

But that is what --track does and is not what --set-upstream is for.

Unlike --track, I don't think --set-upstream is a common enough
operation to deserve a one-letter synonym.

Instead, I'd suggest the following changes:

 1) Add support for

	# change upstream info
	git branch --set-upstream=origin/foo foo

    for existing branches only.

 2) Introduce an --unset-upstream option which removes the
    "corresponding upstream branch" configuration for an existing
    branch.

 3) Warn on

	# acts just like --track
	git branch --set-upstream foo origin/foo

    for branches that do not exist yet.  Plan to make this a hard
    error in the future.

 4) Warn on

	# sets upstream for "foo" to the current branch
	git branch --set-upstream foo

    and plan to make it a hard error in the future.

 5) Warn on

	git branch --set-upstream origin/foo foo

  which is almost certainly a typo for

	git branch --set-upstream=origin/foo foo

 6) Perhaps, make -u a synonym for -t for consistency with "git push".

What do you think?
Jonathan

  reply	other threads:[~2012-07-06 15:33 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-05  7:57 [PATCH] branch: add -u as a shortcut for --set-upstream Carlos Martín Nieto
2012-07-06 15:32 ` Jonathan Nieder [this message]
2012-07-08  5:48   ` Carlos Martín Nieto

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=20120706153239.GA29362@burratino \
    --to=jrnieder@gmail.com \
    --cc=cmn@elego.de \
    --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).