threads / discuss / 60732

Help: Trying to setup triangular workflow

Subject: Help: Trying to setup triangular workflow

## tl;dr

3 messages between Jan 12, 2024 and Jan 13, 2024.

replies: 2people: 2as markdown or json

Matthew B. Gray· Jan 12, 2024, 02:23 UTC · lore
 Hello

I am trying to set up a triangular workflow against a fork. The example I'm using is documented here: https://git-scm.com/docs/gitrevisions

Here's the example:
  $ git config push.default current
  $ git config remote.pushdefault myfork
  $ git switch -c mybranch origin/master
  $ git rev-parse --symbolic-full-name @{upstream}
  refs/remotes/origin/master
  $ git rev-parse --symbolic-full-name @{push}
  refs/remotes/myfork/mybranch
My setup looks like this:
  λ git -v
  git version 2.43.0
  λ git remote -vv
  myfork git@github.com:heymatthew/dactyl-configurator-fork (fetch)
  myfork git@github.com:heymatthew/dactyl-configurator-fork (push)
  origin https://github.com/rianadon/dactyl-configurator (fetch)
  origin https://github.com/rianadon/dactyl-configurator (push)
Here's what I get from running the documented example:
  λ git config push.default current
  λ git config remote.pushdefault myfork
  λ git switch -c mybranch origin/main
  λ git push
  * [new branch]          mybranch -> mybranch
  branch 'mybranch' set up to track 'myfork/mybranch'.
  λ git rev-parse --symbolic-full-name @{upstream}
  refs/remotes/myfork/mybranch
  λ git rev-parse --symbolic-full-name @{push}
  refs/remotes/myfork/mybranch

I was expecting @{upstream} to be origin/main, but it appears that @{u} and @{p} are the same.

Am I doing something wrong? Are there better examples someone can point me at to do this?

Thanks in advance :)

Ngā mihi, Matthew

Jeff King· Jan 12, 2024, 07:31 UTC · re: Matthew B. Gray · lore

Re: Help: Trying to setup triangular workflow

On Fri, Jan 12, 2024 at 03:23:58PM +1300, Matthew B. Gray wrote:
Show 8 quoted lines
> Here's what I get from running the documented example:
> 
>   λ git config push.default current
>   λ git config remote.pushdefault myfork
>   λ git switch -c mybranch origin/main
>   λ git push
>   * [new branch]          mybranch -> mybranch
>   branch 'mybranch' set up to track 'myfork/mybranch'.

This push step is rewriting your upstream config. Do you have push.autoSetupRemote configured? In general you wouldn't want that for a triangular flow.

Though I think it also is only supposed to kick in if there is no tracking configured already. Why did the "git switch" invocation not set up tracking itself? When I run those commands it does. Do you have branch.autoSetupMerge turned off in your config?

-Peff
Matthew B. Gray· Jan 13, 2024, 00:45 UTC · re: Jeff King · lore

Re: Help: Trying to setup triangular workflow

Hi Peff,
> This push step is rewriting your upstream config. Do you have
> push.autoSetupRemote configured? In general you wouldn't want that for a
> triangular flow.
 
Thanks for the pointer, yes have both push.autoSetupRemote and
branch.autoSetupMerge set. Turning these off has fixed my problem.
With neither option set the example yields:
  @{upstream}: refs/remotes/origin/main
  @{push}: refs/remotes/myfork/mybranch
With push.autosetupremote=true set:
  @{upstream}: refs/remotes/origin/main
  @{push}: refs/remotes/myfork/mybranch
With branch.autoSetupMerge=simple set:
  @{upstream}:
  @{push}: refs/remotes/myfork/mybranch
With branch.autoSetupMerge=simple and push.autosetupremote=true:
  @{upstream}: refs/remotes/myfork/mybranch
  @{push}: refs/remotes/myfork/mybranch
> Though I think it also is only supposed to kick in if there is no
> tracking configured already. Why did the "git switch" invocation not set
> up tracking itself? When I run those commands it does. Do you have
> branch.autoSetupMerge turned off in your config?

If you're interested in looking at my full gitconfig it's hosted here: https://github.com/heymatthew/dotfiles/blob/trunk/softlinks/.gitconfig

However looks like taking those out of global config has fixed my issue. Thanks for the help!

Ngā mihi, Matthew

← back to recent threads