git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Tao Klerks <tao@klerks.biz>
Cc: "Josh Steadmon" <steadmon@google.com>,
	"Tao Klerks via GitGitGadget" <gitgitgadget@gmail.com>,
	git@vger.kernel.org, "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>,
	"Eric Sunshine" <sunshine@sunshineco.com>
Subject: Re: [PATCH v4] merge: new autosetupmerge option 'simple' for matching branches
Date: Thu, 21 Apr 2022 19:27:37 -0700	[thread overview]
Message-ID: <xmqqzgkddf8m.fsf@gitster.g> (raw)
In-Reply-To: CAPMMpoiCD+fG=bs2j4Rin5Pvip9Mre9iqLcOb2LYnDQK9cuRxw@mail.gmail.com

Tao Klerks <tao@klerks.biz> writes:

>> I am wondering if that is more irritating than it is
>> worth.  Instead, if you tell them to use branch.autosetupmerge=simple
>> and use push.default to something better than simple, wouldn't that
>> cover more cases and give fewer roadblocks to the end-user with
>> unnecessary errors?
>
> I think you're on to something I missed here.
>
> Unfortunately, I'm not sure what "something better than simple" for
> push.default actually is, in the current system.

"none", probably.  Much better than "current" that can create new
branches on the other side, which you would want to do with an
explicit end-user instruction (i.e. not with "git push", but with
"git push origin topic").

This depends on what you are really trying to achieve.  If we think
it through, perhaps it may turn out to be a combination of a bit
flawed workflow with a bit inadequate toolset.

With "simple" (both in branch.autosetupmerge and push.default), I
can see that if you create "main" from their "main" and "maint" from
their "maint", you want to see that

 (1) your "git pull" to integrate what happend on their "main" or
     "maint" respectively, and

 (2) your "git push" to push what you did on your "main" to their
     "main", and "maint" to "maint".

But it is totally unclear what you really want to do on "topic" you
created this way:

    $ git checkout -b topic origin/main

Currently, with both set to "simple", you do not even get .remote
and .merge for the "topic" branch, so your "git pull" simply does
not work.  And "git push" will also refuse to work.

But then why are you [*] forking from origin/main in the first
place?  What is the purpose you created 'topic' and what do you
plan to do with the result you develop on 'topic'?

	Side note: "you" do not refer to"Tao, the advocate of the
	'simple' configuration", but figuratively the user who
	followed the "simple" route and created topic out of
	origin/main that is not connected to origin/main.

Whatever you commit on topic eventually becomes part of what you'd
push to origin or elsewhere.  I'd assume it would be origin, because
as the user who choose 'simple', you have some branches that you
push back to the same name over there.  Presumably, those are the
primary integration branches the project has, like 'trunk', 'main',
'master', etc.

So perhaps the user would have been better off to fork off of the
LOCAL branch that would eventually be pushed back?  In other words,
the above user who created 'topic' would have done 

    $ git checkout -b main origin/main

to use as a local integration branch that collects the work you will
do locally that is targetted for their 'main' track, so to create a
topic that aims to be part of what is pushed back to their 'main'
track, you would want to do

    $ git checkout -b topic main

instead?  That way, "git push" would either not get .merge/.remote
(when branch.autosetupmerge is set to 'true') or point at your local
'main' branch.

 - The symptom you get from the former is no better than what you
   get from branch.autosetupmerge=simple but it is not worse.
   "push" and "pull" refuses to work and suggest you to do something
   additional.

 - The latter would make your "git push" and "git pull" on 'topic'
   to work with your local 'main', treating your 'main' in a way
   very similar to how you treat your remote 'main' when you are on
   your own 'main', which is quite reasonable if your change flow is
   designed to be "work on topic, when the changes on topic proves
   OK, send that to main, and when the changes on main proves OK,
   send that to their main".

I guess I am esseentially saying that the usefulness of "simple" for
branch.autosetupmerge is dubious.

> Do you agree that none of the push.default options available today are
> "right" for this flow? Do you have a preference or opinion as to
> whether:
> * push.default=current should be changed to set up tracking when absent, or
> * push.default=simple should be changed to "simply" push and set up
> tracking when there is no tracking, or
> * a new push.default option should be introduced for this behavior, or
> * some other configuration should be introduced to specify "and set up
> tracking on default push if missing" (and if so, under what
> circumstances should it kick in?)

None of the above, I guess.

  reply	other threads:[~2022-04-22  2:27 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-24  9:45 [PATCH 0/3] adding new branch.autosetupmerge option "simple" Tao Klerks via GitGitGadget
2022-02-24  9:45 ` [PATCH 1/3] merge: new autosetupmerge option 'simple' for matching branches Tao Klerks via GitGitGadget
2022-02-24 19:20   ` Junio C Hamano
2022-02-24  9:45 ` [PATCH 2/3] t3200: tests for new branch.autosetupmerge option "simple" Tao Klerks via GitGitGadget
2022-02-24  9:45 ` [PATCH 3/3] branch documentation: new autosetupmerge " Tao Klerks via GitGitGadget
2022-02-24 19:38   ` Junio C Hamano
2022-02-25 18:52 ` [PATCH v2 0/2] adding new branch.autosetupmerge " Tao Klerks via GitGitGadget
2022-02-25 18:52   ` [PATCH v2 1/2] merge: new autosetupmerge option 'simple' for matching branches Tao Klerks via GitGitGadget
2022-02-25 20:15     ` Junio C Hamano
2022-02-27 23:59       ` Tao Klerks
2022-02-25 18:52   ` [PATCH v2 2/2] t3200: tests for new branch.autosetupmerge option "simple" Tao Klerks via GitGitGadget
2022-02-28  7:14   ` [PATCH v3 0/2] adding " Tao Klerks via GitGitGadget
2022-02-28  7:14     ` [PATCH v3 1/2] merge: new autosetupmerge option 'simple' for matching branches Tao Klerks via GitGitGadget
2022-02-28 10:39       ` Ævar Arnfjörð Bjarmason
2022-03-02  9:35         ` Tao Klerks
2022-03-20 17:00           ` Tao Klerks
2022-02-28  7:14     ` [PATCH v3 2/2] t3200: tests for new branch.autosetupmerge option "simple" Tao Klerks via GitGitGadget
2022-02-28  9:34       ` Ævar Arnfjörð Bjarmason
2022-03-01  2:58         ` Eric Sunshine
2022-03-01  9:59           ` Tao Klerks
2022-03-01  9:59         ` Tao Klerks
2022-03-21  6:17     ` [PATCH v4] merge: new autosetupmerge option 'simple' for matching branches Tao Klerks via GitGitGadget
2022-04-18 18:15       ` Josh Steadmon
2022-04-20  5:12         ` Tao Klerks
2022-04-20 17:19           ` Josh Steadmon
2022-04-20 17:43           ` Junio C Hamano
2022-04-20 21:31             ` Tao Klerks
2022-04-21  1:53               ` Junio C Hamano
2022-04-21 10:04                 ` Tao Klerks
2022-04-22  2:27                   ` Junio C Hamano [this message]
2022-04-22  9:24                     ` Tao Klerks
2022-04-22 13:27                       ` Tao Klerks
2022-04-23  4:44                       ` Junio C Hamano
2022-04-24 11:57                         ` Tao Klerks
2022-04-29  7:31                           ` Tao Klerks
2022-04-29  9:56       ` [PATCH v5 0/3] New options to support "simple" centralized workflow Tao Klerks via GitGitGadget
2022-04-29  9:56         ` [PATCH v5 1/3] branch: new autosetupmerge option 'simple' for matching branches Tao Klerks via GitGitGadget
2022-04-29  9:56         ` [PATCH v5 2/3] push: default to single remote even when not named origin Tao Klerks via GitGitGadget
2022-04-29  9:56         ` [PATCH v5 3/3] push: new config option "push.autoSetupRemote" supports "simple" push Tao Klerks via GitGitGadget
2022-04-29 18:50         ` [PATCH v5 0/3] New options to support "simple" centralized workflow Junio C Hamano
2022-04-30 15:48           ` Tao Klerks

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=xmqqzgkddf8m.fsf@gitster.g \
    --to=gitster@pobox.com \
    --cc=avarab@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitgitgadget@gmail.com \
    --cc=steadmon@google.com \
    --cc=sunshine@sunshineco.com \
    --cc=tao@klerks.biz \
    /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).