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

Re: [PATCH 2/2] format-patch: introduce format.defaultTo

From
Jeff King <peff@peff.net>
Date
Jan 7, 2014, 20:56 UTC
Message-ID
<20140107205618.GA28102@sigill.intra.peff.net>
In-Reply-To
<CALkWK0k21W4gz9Rm8CyLMwjXq2A9wvm=XCVDsqs06oeW3VUg6w@mail.gmail.com>
On Tue, Jan 07, 2014 at 03:40:56AM +0530, Ramkumar Ramachandra wrote:
Show 8 quoted lines
> Jeff King wrote:
> > Yeah, I had similar thoughts. I personally use "branch.*.merge" as
> > "forkedFrom", and it seems like we are going that way anyway with things
> > like "git rebase" and "git merge" defaulting to upstream.
> 
> My issue with that is that I no idea where my branch is with respect
> to my forked upstream; I find that extremely useful when doing
> re-spins.

Right. I think there are two separate relationships, and they are both shoe-horned into "upstream". The solution is to let them be configured separately (and fallback on each other as appropriate to make the burden less on the user).

> push.default = upstream is a bit of a disaster, in my opinion. I've
> advocated push.default = current on multiple occasions, and wrote the
> initial remote.pushDefault series with that configuration in mind.
Yeah, I agree with all of that.
Show 10 quoted lines
> > I wonder if it is too late to try to clarify this dual usage. It kind of
> > seems like the push config is "this is the place I publish to". Which,
> > in many workflows, just so happens to be the exact same as the place you
> > forked from. Could we introduce a new branch.*.pushupstream variable
> > that falls back to branch.*.merge? Or is that just throwing more fuel on
> > the fire (more sand in the pit in my analogy, I guess).
> 
> We already have a branch.*.pushremote, and I don't see the value of
> branch.*.pushbranch (what you're referring to as pushupstream, I
> assume) except for Gerrit users.

Yes, "pushbranch" is probably a better name for what I am referring to. I agree that pushremote is probably enough for sane cases. I seem to recall that people advocating the "upstream" push-default thought that branch name mapping was a useful feature, but I might be mis-remembering. I will let those people speak up for the feature if they see fit; it seems somewhat crazy to me.

> Frankly, I don't use full triangular workflows myself mainly because
> my prompt is compromised: when I have a branch.*.remote different from
> branch.*.pushremote, I'd like to see where my branch is with respect
> to @{u} and @{publish} (not yet invented);

Yes, as two separate relationships, you would theoretically want to be able to see them separately (or simultaneously side by side). Whether exposing that in the prompt is too clunky, I don't know (I don't even show ahead/behind in my prompt, but rather prefer to query it when I care; I have a separate script that queries the ahead/behind against my publishing point, but it would be nice if git handled this itself).

Show 6 quoted lines
> > I admit I haven't thought it through yet, though. And even if it does
> > work, it may throw a slight monkey wrench in the proposed push.default
> > transition.
> 
> We're transitioning to push.default = simple which is even simpler
> than current.

Simpler in the sense that it is less likely to do something unexpected. But the rules are actually more complicated. Two examples:

  1. Imagine I make a feature branch "foo" forked off of origin/master, then
     "git push" with no arguments. The "current" scheme would go to
     "foo" on origin, but "upstream" would go to "master". Since they
     don't agree, "simple" will punt and tell me to be more specific.
  2. Imagine I have set my default push remote to "publish", am on
     master (forked from "origin/master") and I run "git push" without
     arguments. "current" would push to "master" on "publish". But
     "upstream" will complain, because we are not pushing to our
     upstream remote. I believe "simple" will therefore reject this.

In both cases, I think "current" does the sane thing, and "simple" makes things more complicated. The one saving grace it has is that it punts on these cases rather than potentially doing something destructive that the user did not intend.

-Peff
Previous: Ramkumar RamachandraNext: Junio C Hamano
Message 23 of 37 in “Minor convinience feature: format.defaultTo”
  1. 0/2 Minor convinience feature: format.defaultToRamkumar Ramachandra, Jan 6, 2014
  2. 1/2 completion: complete format.coverLetterRamkumar Ramachandra, Jan 6, 2014
  3. Ramkumar RamachandraJan 7, 2014
  4. 2/2 format-patch: introduce format.defaultToRamkumar Ramachandra, Jan 6, 2014
  5. Jonathan NiederJan 6, 2014
  6. Ramkumar RamachandraJan 6, 2014
  7. Junio C HamanoJan 6, 2014
  8. Ramkumar RamachandraJan 6, 2014
  9. Junio C HamanoJan 6, 2014
  10. Jeff KingJan 6, 2014
  11. John SzakmeisterJan 6, 2014
  12. Jonathan NiederJan 6, 2014
  13. John SzakmeisterJan 6, 2014
  14. Junio C HamanoJan 6, 2014
  15. Ramkumar RamachandraJan 6, 2014
  16. John SzakmeisterJan 7, 2014
  17. Ramkumar RamachandraJan 7, 2014
  18. Jeff KingJan 6, 2014
  19. Junio C HamanoJan 6, 2014
  20. Jeff KingJan 6, 2014
  21. Junio C HamanoJan 6, 2014
  22. Ramkumar RamachandraJan 6, 2014
  23. Jeff KingJan 7, 2014
  24. Junio C HamanoJan 7, 2014
  25. Jeff KingJan 7, 2014
  26. Junio C HamanoJan 7, 2014
  27. Jeff KingJan 7, 2014
  28. Junio C HamanoJan 7, 2014
  29. Felipe ContrerasApr 10, 2014
  30. Ramkumar RamachandraJan 6, 2014
  31. Junio C HamanoJan 6, 2014
  32. Ramkumar RamachandraJan 6, 2014
  33. Jeff KingJan 7, 2014
  34. Ramkumar RamachandraJan 7, 2014
  35. Jeff KingJan 7, 2014
  36. Felipe ContrerasApr 10, 2014
  37. Ramkumar RamachandraJan 6, 2014

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.