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

Re: git-merge-cache / StGIT - gitmergeonefile.py: merging one tree into another rather than two trees into merge base

From
CMCatalin Marinas <catalin.marinas@gmail.com>
Date
Sep 17, 2005, 09:31 UTC
Message-ID
<1126949517.6941.19.camel@localhost.localdomain>
In-Reply-To
<7vvf10hji1.fsf@assigned-by-dhcp.cox.net>
On Fri, 2005-09-16 at 12:59 -0700, Junio C Hamano wrote:
Show 12 quoted lines
> Catalin Marinas <catalin.marinas@gmail.com> writes:
> 
> > git-read-tree -m doesn't handle the case when a file is removed from
> > one branch and unmodified in the other, which is what happens in your
> > test. For each of these removed files, git-merge-cache will call
> > gitmergeonefile.py which calls 'git-update-cache --remove'.
> >
> > An improvement would be to make git-read-tree smarter...
> 
> I think this was once discussed but the primary reason for the
> behaviour is that Linus wanted to leave as much merge policy
> decision to be scriptable without hardcoding it in read-tree.

This could be OK for git-read-tree but maybe git-merge-index could have a --smart option to deal with trivial cases like below (or a separate tool). Whoever wants to write a more interactive script would not pass this option.

> If you always do "added or removed in only one head
> means take that head", most likely in the above example B would
> not have a new path (rename target of A) so you would end up
> always taking the file rename.
That's what happens with the current merge scripts.

Another option for me would be to try to interface Python with libgit.a and emulate the git-merge-index behaviour but I've never tried mixing Python and C before.

Show 6 quoted lines
> A completely different topic:  would it please people if I did this?
> 
>     $ git-diff-tree -r --names-and-changes A B
>     M	frotz
>     R93	rezrov	nitfol
>     D	yomin

It might help for people using git directly (me as well). StGIT parses the git-diff-tree output anyway.

-- 
Catalin
Previous: Junio C HamanoNext: Chuck Lever
Message 10 of 14 in “git-merge-cache / StGIT - gitmergeonefile.py: merging one tree into another rather than two trees into merge base”
  1. BlaisorbladeSep 10, 2005
  2. Catalin MarinasSep 11, 2005
  3. Chuck LeverSep 12, 2005
  4. BlaisorbladeSep 14, 2005
  5. BlaisorbladeSep 14, 2005
  6. BlaisorbladeSep 14, 2005
  7. Catalin MarinasSep 15, 2005
  8. BlaisorbladeSep 16, 2005
  9. Junio C HamanoSep 16, 2005
  10. Catalin MarinasSep 17, 2005
  11. omitted test scripts?Chuck Lever, Sep 19, 2005
  12. Junio C HamanoSep 19, 2005
  13. Daniel BarkalowSep 19, 2005
  14. Matthias UrlichsSep 19, 2005

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.