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

Re: [PATCH] Documentation: update git-pull.txt for clone's new default behavior

From
LTLuben Tuikov <ltuikov@yahoo.com>
Date
Jan 1, 2007, 08:19 UTC
Message-ID
<997672.38239.qm@web31814.mail.mud.yahoo.com>
In-Reply-To
<7vfyav8ae1.fsf@assigned-by-dhcp.cox.net>
--- Junio C Hamano <junkio@cox.net> wrote:
Show 16 quoted lines
> Luben Tuikov <ltuikov@yahoo.com> writes:
> 
> > --- "J. Bruce Fields" <bfields@fieldses.org> wrote:
> > ...
> >> Could you explain a situation where this would be useful?
> >
> > I don't know how to respond to this question.
> >
> >>  A
> >> "parent<-->child" relationship, where there's one upstream branch that
> >> is always merged in, is easily handled;
> >
> > e is the base of natural logarithms.
> 
> You lost me here; I am guessing this is some sarcasm not worth
> paying attention to, so I'd ignore this part for now.

Absolutely correct. I just needed to respond to an obvious fact with another obvious fact.

Show 13 quoted lines
> >> just replace your "git pull parent" by a "git pull", right?
> >
> > Yes, but I don't want to just type "git-pull", I want to explicitly
> > type "git-pull parent" and depending in which branch I'm at, "parent"
> > would have identical meaning but would merge a different branch... because
> > I'm in a different branch...
> >
> >> Am I misunderstanding the proposal?
> >
> > I did give an example of usage in my email to which you replied.
> 
> But what confuses me (and I think JBF shares the same confusion
> with me) is that you had only one example "parent".

More complicated and exotic examples exist. See my response to JBF, which I just posted a moment ago.

> While I understand that it would make sense to define "parent"

No, no, no. Forget about the semantic attibute of "parent". I could've called it "xyz" for that matter.

What I'm talking about is the concept of "branch spec". It is a well known concept in SCMs.

We currently implement it, in git specific way, for remotes/ only, but not for local ("topic") branches.

Another way to look at it is that a Topic, can have many other self-contained sub-Topics, each one building on the one "before" it, extending it, yet introducing new functionality, and only in the "leaf" branch, do you get a fully capable software. Each sub-topic branch is also a working software but only implements part of the functionality of your product and/or toned down version of it, say if someone doesn't want support for feature ABC, which uses 100MiB of memory...

> for each branch in a downstream developer's workflow, (1) I do
> not see the difference between your wording, "parent", and what
> we traditionally have called "origin",

I've always contended that it is the same and had mentioned that it is only implemented for remotes/.

Show 8 quoted lines
> and (2) I do not think of
> relationship other than "parent" ("origin") that is applicable
> commonly (in other words, "worth having your 'symbolic'
> mechanism for, because it is so commonly applicable") to
> branches offhand.  Hence, JBF's suggestion to use "git pull"
> without using noiseword "parent" or "origin" feels very natural
> to me --- if there can be only one valid thing to say, why do
> you even have to say it?

Well, this is the question... Can you stipulate that there is only _one_ valid thing to say? Wouldn't it be easier to generalize the concept of "branch spec" to local "topic" branches as we do now for remotes/. Wouldn't this allow people to have more freedom at what and how they'd like to set their software dependencies?

The SCM industry seem to have generalized this with the concept of a "branch spec".

> Because I do not understand what you would want "parent" for and
> why "git pull" is not sufficient,

Because it _implicitly_ defines the relationship. Nothing wrong with that, but also allowing an explicit naming of the relationship, as is currently done for remotes/, would give git much, much more power to define even the most complicated software development setup (locally).

As I pointed out before, "branch.<name>..{fetch,merge}" would cover the "git-pull" case. "branch..<symbolic-ref>.{fetch,merge}" should be illegal since it is the same as remotes/, and "branch.<name>.<symbolic-ref>.{fetch, merge}" matches "git-pull <symbolic-ref>".

> I cannot tell if this would
> help solving what you are trying to solve in a different way,
1) It would help solve it the proper way and,
2) it would give git the concept of "branch spec" universally, i.e.
local branches as well as remotes.
Show 5 quoted lines
> but I suspect a useful thing to have might be a per-branch
> alias.  For example, we could allow "git merge" without
> parameters to alias to "git merge origin/next" when you are on
> your 'next' and the same "git merge" could be aliased to "git
> merge origin/master" when you are on your 'master'.

Any why not solve the absolute general case forever, by implementing what I have described above, and move on to more interesting things?

     Luben
Previous: Junio C HamanoNext: Theodore Tso
Message 16 of 47 in “Docs: update cvs-migration.txt to reflect clone's new default behavior”
  1. Docs: update cvs-migration.txt to reflect clone's new default behaviorbfields@fieldses.org, Dec 31, 2006
  2. Documentation: update git-clone.txt for clone's new default behaviorbfields@fieldses.org, Dec 31, 2006
  3. Documentation: update git-pull.txt for clone's new default behaviorbfields@fieldses.org, Dec 31, 2006
  4. Documentation: update glossary entry for "origin"bfields@fieldses.org, Dec 31, 2006
  5. Documentation: remove master:origin example from pull-fetch-param.txtbfields@fieldses.org, Dec 31, 2006
  6. Documentation: update tutorial's discussion of originbfields@fieldses.org, Dec 31, 2006
  7. Junio C HamanoJan 1, 2007
  8. J. Bruce FieldsJan 1, 2007
  9. Junio C HamanoJan 1, 2007
  10. Luben TuikovJan 1, 2007
  11. J. Bruce FieldsJan 1, 2007
  12. Luben TuikovJan 1, 2007
  13. J. Bruce FieldsJan 1, 2007
  14. Luben TuikovJan 1, 2007
  15. Junio C HamanoJan 1, 2007
  16. Luben TuikovJan 1, 2007
  17. Theodore TsoJan 1, 2007
  18. Luben TuikovJan 1, 2007
  19. Theodore TsoJan 2, 2007
  20. Luben TuikovJan 2, 2007
  21. Junio C HamanoJan 2, 2007
  22. Luben TuikovJan 2, 2007
  23. J. Bruce FieldsJan 1, 2007
  24. J. Bruce FieldsJan 1, 2007
  25. Luben TuikovJan 2, 2007
  26. J. Bruce FieldsJan 2, 2007
  27. Theodore TsoJan 2, 2007
  28. Luben TuikovJan 2, 2007
  29. Junio C HamanoJan 2, 2007
  30. Luben TuikovJan 2, 2007
  31. Junio C HamanoJan 2, 2007
  32. Jakub NarebskiJan 2, 2007
  33. Luben TuikovJan 2, 2007
  34. Junio C HamanoJan 2, 2007
  35. Jakub NarebskiJan 2, 2007
  36. Luben TuikovJan 2, 2007
  37. Jakub NarebskiJan 2, 2007
  38. Junio C HamanoJan 2, 2007
  39. Luben TuikovJan 5, 2007
  40. Junio C HamanoJan 5, 2007
  41. Junio C HamanoJan 5, 2007
  42. Luben TuikovJan 6, 2007
  43. Luben TuikovJan 6, 2007
  44. Junio C HamanoJan 6, 2007
  45. Luben TuikovJan 1, 2007
  46. J. Bruce FieldsJan 2, 2007
  47. Junio C HamanoJan 2, 2007

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.