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

Re: Finding the name of the parent branch?

From
SBSanti Béjar <santi@agolina.net>
Date
Jan 30, 2009, 13:16 UTC
Message-ID
<adf1fd3d0901300516y3d1bf58dmda9c5172586d828@mail.gmail.com>
In-Reply-To
<a2633edd0901300456y48e8d78fn199675f2ae105c8@mail.gmail.com>
2009/1/30 Pascal Obry <pascal@obry.net>:
Show 8 quoted lines
> Santi,
>
> Thanks for you reply.
>
>> I think your definition is not well defined. A, B and C are just
>> branches of you project, technically they are equivalent. Maybe you
>
> Right. Yet I want to know from which branch a branch as been started.
You can set it when you create the branch:
git branch --track newbranch startpointbranch
(maybe --track is the default these days for remote branches)
And then the config keys:

branch.newbranch.remote branch.newbranch.merge

will tell you from which branch a branch was started. And it is used in "git pull" to merge from the tracking branch.

Show 10 quoted lines
> You need this to get the proper merge-base for example:
>
>   $ git merge-base C A
>      1
>
>   $ git merge-base B C
>      2
>
>   $ git merge-base B A
>      1
1 and 2 are defined in the graph below...
Show 9 quoted lines
> I always know on which topic branch I'm but, as shown above, depending on the
> parent branch passed to merge-base you do not get the same branch-point. This
> is fine.
>
> So, when I'm in a topic branch I want to find the name of the parent
> branch. The one given
> when creating the branch:
>
>   $ git branch B C
See above.
Show 7 quoted lines
>
> A "stupid" solution whould be to iterate over all branches. Looking
> for the merge-base and
> at the end output the branch having the youngest merge-base. I'm
> looking for something
> more efficient...
>

Maybe if you explain why you want it (a use case) instead of just this specific problem...

Show 14 quoted lines
>> are thinking that the common commits of, say A and B, really belongs
>> to A, but this is not the case they belong to both branches. In git a
>> branch is really just a pointer to a commit and by extension the
>> history, it is not a series of commits.
>>
>> Just a counterexample, just rearranging you graph:
>>
>>                        o---B
>>                        /
>>                   o---2---o---o---o---C
>>                  /
>>          ---o---1---o---o---o---A
>>
>> From you description: For B I would get C and for C I would get A.
Please, if you quote text do not edit it (the 1 and the 2 in this case).
> Don't see this as a counter-example as it is exactly my example.
>
> Did I missed something?
Yes. Compare your sentence and mine:

For B I want to get A and for C I want to get B. For B I would get C and for C I would get A.

So for B you get A while I get C, and the equivalent for C.
Santi
Previous: Pascal ObryNext: Pascal Obry
Message 4 of 11 in “Finding the name of the parent branch?”
  1. Pascal ObryJan 30, 2009
  2. Santi BéjarJan 30, 2009
  3. Pascal ObryJan 30, 2009
  4. Santi BéjarJan 30, 2009
  5. Pascal ObryJan 30, 2009
  6. Santi BéjarJan 30, 2009
  7. Pascal ObryJan 30, 2009
  8. Santi BéjarJan 30, 2009
  9. Michael J GruberJan 30, 2009
  10. Thomas KochJan 30, 2009
  11. Pascal ObryJan 30, 2009

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.