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

Re: keeping track of where a patch begins

From
Nicolas Pitre <nico@fluxnic.net>
Date
Oct 21, 2009, 20:50 UTC
Message-ID
<alpine.LFD.2.00.0910211623370.21460@xanadu.home>
In-Reply-To
<7veiow4iqc.fsf@alter.siamese.dyndns.org>
On Wed, 21 Oct 2009, Junio C Hamano wrote:
Show 20 quoted lines
> Nicolas Pitre <nico@fluxnic.net> writes:
> 
> > On Wed, 21 Oct 2009, E R wrote:
> >
> >> What solutions have you come up with to either to catch or prevent
> >> this from happening? It is possible to determine what node a branch
> >> started from?
> >
> > This can be determined by looking at the gitk output.
> >
> > Also 'git merge-base' can give you that node, given the main branch and 
> > the topic branch.  See documentation about git-merge-base.
> >
> > Then if you need to move a branch to another starting node, then 'git 
> > rebase' is what you need (again the git-rebase documentation is pretty 
> > detailed).
> 
> That is a correct way to diagnose the mistake and recover from it, but
> unfortunately it is a rather weak tool to identify the mistake in the
> first place.

Well... The "mistake" is probably going to be different depending on the work flow used. I don't think there is a generic definition of such mistakes.

In this case, simply having
	if [ $(git merge-base $expected_branch_point $branch) != \
	     $(git rev-parse $expected_branch_point) ]; then
		(complain/refuse the merge of $branch)
	fi

should be quite sufficient as an enforcing proper branch policy. Of course the $expected_branch_point is something that is determined outside of Git.

Show 9 quoted lines
> A branch in git, as Randal often used to say on #git, is an illusion---it
> points only at the top and does not identify the bottom.
> 
> But it does _not_ have to stay that way at the Porcelain level.
> 
> Here is a rough sketch of one possible solution.  It is not fully thought
> out; the basic idea is probably sound but I did not try to exhaustively
> cover changes to various tools that are necessary to maintain the
> invariants this scheme requires.

I never came across a situation where such an elaborated scheme was needed to actually record and maintain that information, or could be really useful. And some branches might be built on top of a sub-branch already, making the real branch's bottom the sub-branch's instead in a given context. It all depends on the work flow and the convention used for a project. And the tool has no way to figure that out (is this the real branch bottom or should it be one or more level down?), etc.

> We probably could kill the other bird in the nearby thread that wants to
> add a description to a branch, if this scheme is fully implemented

Well, I think we gain in flexibility by keeping those things separate though. Blending data structures together is not always a good thing.

We have reflog data separate from the refs themselves, so I think that having .git/desc/refs/* containing simple text files would be good enough and simple to implement/use.

Nicolas
Previous: Junio C HamanoNext: Thomas Rast
Message 4 of 8 in “keeping track of where a patch begins”
  1. E ROct 21, 2009
  2. Nicolas PitreOct 21, 2009
  3. Junio C HamanoOct 21, 2009
  4. Nicolas PitreOct 21, 2009
  5. Thomas RastOct 22, 2009
  6. Pascal ObryOct 30, 2009
  7. Thomas RastOct 30, 2009
  8. Jeff KingOct 26, 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.