# Help: Trying to setup triangular workflow

3 messages from 2024-01-12 to 2024-01-13. Participants: Matthew B. Gray, Jeff King.
Thread: https://gitlist.dev/t/60732

## Matthew B. Gray, 2024-01-12 02:23

Subject: Help: Trying to setup triangular workflow
Message-ID: <b59c59f6-29e1-4d67-bace-13adcc108454@app.fastmail.com>
URL: https://gitlist.dev/e/b59c59f6-29e1-4d67-bace-13adcc108454%40app.fastmail.com

```
 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, 2024-01-12 07:31

Subject: Re: Help: Trying to setup triangular workflow
Message-ID: <20240112073136.GG618729@coredump.intra.peff.net>
URL: https://gitlist.dev/e/20240112073136.GG618729%40coredump.intra.peff.net
In-Reply-To: <b59c59f6-29e1-4d67-bace-13adcc108454@app.fastmail.com>

```
On Fri, Jan 12, 2024 at 03:23:58PM +1300, Matthew B. Gray wrote:

> 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, 2024-01-13 00:45

Subject: Re: Help: Trying to setup triangular workflow
Message-ID: <bf59af5d-1a59-41bb-b693-087b940e266b@app.fastmail.com>
URL: https://gitlist.dev/e/bf59af5d-1a59-41bb-b693-087b940e266b%40app.fastmail.com
In-Reply-To: <20240112073136.GG618729@coredump.intra.peff.net>

```
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

```
