git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v2 6/6] doc: push: explain default=simple correctly

From
Felipe Contreras <felipe.contreras@gmail.com>
Date
Jun 1, 2021, 16:35 UTC
Message-ID
<60b661d5ee7cc_3c4208c1@natae.notmuch>
In-Reply-To
<a385c279-5902-40af-f54d-85b950bbb497@iee.email>
Philip Oakley wrote:
Show 15 quoted lines
> On 01/06/2021 13:12, Felipe Contreras wrote:
> > So it's more like:
> >
> >   centralized = ~decentralized
> >   triangular = ~two-way
> >
> > A centralized workflow consists of a single repository where branches
> > are typically two-way, but not necessarily.
> >
> > A decentralized workflow consists of multiple repositories where
> > branches are typically triangular, but not necessarily.
> >
> > So the triangularity is per branch, not per repository, and same_repo
> > means a two-way branch, could be a centralized or decentralized
> > workflow.
> My personal viewpoint is that triangular flow happens when you cannot
> push to the repo you consider as upstream.

It's not about permissions. Even if I had permissions to push to git.git, I wouldn't do so. I do have permission to push to some public projects, but I instead send patches/pull requests like everyone else.

It's more about ownership. In my personal repositories I can push whatever I want, but on shared repositories I have to be more careful.

Show 6 quoted lines
> Rather you typically have a publish/backup repo instead (semi-public,
> semi-private - few are interested ;-).
> 
> That (can't push one way around the triangle) part of the flow is
> separate from the distinction between patch flows and merge (Pull)
> request flows.

I think it's not separate, that is the thing that makes a triangular flow triangular: the flow of patches goes through a different repository, and then they get picked and merged into the upstream one.

Show 6 quoted lines
> E.g. My personal Git repo can be triangular with both git.git and
> git-for-windows, plus a few (what I view as) fetch-only repos from other
> collaborators/maintainers beyond the triangular 'golden' upstream repo.
> 
> I often consider GitHub as a centraliser, but I don't think it's what is
> being considered above.

GitHub is all about pull requests, you fork a repository, you push your branch into that personal fork, and then you request a pull from upstream.

That's triangular.
Show 15 quoted lines
> --
> A thought did come to mind that a Git serve/repo (typically bare) should
> be able to offer a 'refs/users/*' space (c.f. refs/remotes used by
> individual users) that allows a type of 'centralised' operation (almost
> as if all the users used a common alternates repo). Users could only
> push to their own /user refs, but could pull from the main refs/heads,
> and their own refs/users/ space.
> 
> This would give flexibility to smaller corporate central operations to
> offer 'triangular flow' where each dev would feel like they have their
> own 'push' repo, when in reality it's really personalised branches. As
> usual the authentication of user names being handed off elsewhere;-). It
> could avoid some of the --alternate management aspects.
> 
> It's a thought..

Yeah, and interesting thought. But it demonstrates what I said above: you can have a central repository, and yet have triangular branches:

 feature-1 <=  origin/master
            => origin/felipec/feature-1
Cheers.
-- 
Felipe Contreras
Previous: Philip OakleyNext: Philip Oakley
Message 27 of 59 in “Unconvolutize push.default=simple”
  1. 0/6 Unconvolutize push.default=simpleFelipe Contreras, May 29, 2021
  2. 1/6 push: hedge code of default=simpleFelipe Contreras, May 29, 2021
  3. Junio C HamanoMay 31, 2021
  4. Felipe ContrerasMay 31, 2021
  5. 4/6 push: simplify setup_push_simple()Felipe Contreras, May 29, 2021
  6. Junio C HamanoMay 31, 2021
  7. 2/6 push: move code to setup_push_simple()Felipe Contreras, May 29, 2021
  8. Junio C HamanoMay 31, 2021
  9. Felipe ContrerasMay 31, 2021
  10. 3/6 push: reorganize setup_push_simple()Felipe Contreras, May 29, 2021
  11. Junio C HamanoMay 31, 2021
  12. 6/6 doc: push: explain default=simple correctlyFelipe Contreras, May 29, 2021
  13. Mathias KunterMay 30, 2021
  14. Felipe ContrerasMay 30, 2021
  15. Mathias KunterMay 31, 2021
  16. Felipe ContrerasMay 31, 2021
  17. Mathias KunterMay 31, 2021
  18. Felipe ContrerasMay 31, 2021
  19. Mathias KunterMay 31, 2021
  20. Felipe ContrerasMay 31, 2021
  21. Mathias KunterMay 31, 2021
  22. Junio C HamanoMay 31, 2021
  23. Felipe ContrerasMay 31, 2021
  24. Junio C HamanoJun 1, 2021
  25. Felipe ContrerasJun 1, 2021
  26. Philip OakleyJun 1, 2021
  27. Felipe ContrerasJun 1, 2021
  28. Philip OakleyJun 1, 2021
  29. Felipe ContrerasJun 1, 2021
  30. Junio C HamanoJun 1, 2021
  31. 5/6 push: remove unused code in setup_push_upstream()Felipe Contreras, May 29, 2021
  32. 00/15 push: revamp push.defaultFelipe Contreras, May 29, 2021
  33. 01/15 push: create new get_upstream_ref() helperFelipe Contreras, May 29, 2021
  34. 02/15 push: return immediately in trivial switch caseFelipe Contreras, May 29, 2021
  35. 03/15 push: reorder switch casesFelipe Contreras, May 29, 2021
  36. Junio C HamanoMay 31, 2021
  37. Felipe ContrerasMay 31, 2021
  38. 04/15 push: factor out null branch checkFelipe Contreras, May 29, 2021
  39. 05/15 push: only get the branch when neededFelipe Contreras, May 29, 2021
  40. Junio C HamanoMay 31, 2021
  41. Felipe ContrerasMay 31, 2021
  42. 06/15 push: make setup_push_* return the dstFelipe Contreras, May 29, 2021
  43. 10/15 push: remove redundant checkFelipe Contreras, May 29, 2021
  44. 08/15 push: get rid of all the setup_push_* functionsFelipe Contreras, May 29, 2021
  45. Junio C HamanoMay 31, 2021
  46. 07/15 push: trivial simplificationsFelipe Contreras, May 29, 2021
  47. 09/15 push: factor out the typical caseFelipe Contreras, May 29, 2021
  48. 11/15 push: fix Yoda conditionFelipe Contreras, May 29, 2021
  49. Junio C HamanoMay 31, 2021
  50. 14/15 push: don't get a full remote objectFelipe Contreras, May 29, 2021
  51. 13/15 push: only get triangular when neededFelipe Contreras, May 29, 2021
  52. Junio C HamanoMay 31, 2021
  53. 12/15 push: remove trivial functionFelipe Contreras, May 29, 2021
  54. 15/15 push: rename !triangular to same_remoteFelipe Contreras, May 29, 2021
  55. Junio C HamanoMay 31, 2021
  56. Philip OakleyMay 29, 2021
  57. Felipe ContrerasMay 30, 2021
  58. Ævar Arnfjörð BjarmasonMay 30, 2021
  59. Felipe ContrerasMay 30, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.