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

Re: merge renamed files/directories?

From
Steven Grimm <koreth@midwinter.com>
Date
May 5, 2008, 23:07 UTC
Message-ID
<ADDE27A8-6329-4C09-BC07-8EB023BA6D48@midwinter.com>
In-Reply-To
<alpine.LFD.1.10.0805051512060.32269@woody.linux-foundation.org>
On May 5, 2008, at 3:20 PM, Linus Torvalds wrote:
Show 6 quoted lines
> I really don't understand why people expect a directory rename to be
> handled automatically, when it is (a) not that common and (b) not  
> obvious
> what the solution is, but MOST OF ALL (c) so damn _easy_ to handle it
> manually after-the-fact when you notice that something doesn't  
> compile!

Assuming all you track with git is source code that has dependencies such that a compile command fails cleanly when things end up in the wrong directory, sure.

If you're using git to, say, track a tree of documentation files or images that are referred to using relative URLs in HTML pages, detecting the breakage is less trivial unless you have a really solid automated QA process that can check for dangling references.

Are directory renames as common as file renames? Certainly not. But they happen often enough that it's annoying to have to manually clean up after them. Note that I did not say it is difficult or impossible to manually clean up after them. I think the number of people who've mentioned this on the list should stand as some kind of refutation of the idea that directory renames are so vanishingly rare as to not be worth mentioning. I've run into the problem a few times myself.

> and "Tadaa! All done". Your merge that was *fundamentally  
> impossible* to
> do automatically, was trivially done manually, with no actual big
> head-scratiching involved.

$ mkdir parent $ cd parent $ hg init $ mkdir subdir1 $ echo "I am the walrus" > subdir1/file1 $ hg add subdir1/file1 $ hg commit -m 'initial commit' $ cd .. $ hg clone parent child $ cd child $ hg mv subdir1 subdir2 $ hg commit -m 'rename subdir1 to subdir2' $ cd ../parent $ echo 'I love prunes' > subdir1/file2 $ hg add subdir1/file2 $ hg commit -m 'new file in subdir' $ cd ../child $ hg pull $ hg merge $ ls subdir2 file1 file2

Doesn't seem *fundamentally* impossible to produce the results that are most likely to be what people want. (Which doesn't equal "guaranteed to be 100% correct 100% of the time or your money back" -- as you say, merging is an inexact science.)

-Steve
Previous: Linus TorvaldsNext: Linus Torvalds
Message 34 of 49 in “detecting rename->commit->modify->commit”
  1. Ittay DrorMay 1, 2008
  2. Jeff KingMay 1, 2008
  3. Ittay DrorMay 1, 2008
  4. Jeff KingMay 1, 2008
  5. Ittay DrorMay 1, 2008
  6. Jeff KingMay 1, 2008
  7. Jakub NarebskiMay 1, 2008
  8. Teemu LikonenMay 1, 2008
  9. Jeff KingMay 1, 2008
  10. Sitaram ChamartyMay 2, 2008
  11. Junio C HamanoMay 2, 2008
  12. Sitaram ChamartyMay 2, 2008
  13. Ittay DrorMay 1, 2008
  14. Jeff KingMay 1, 2008
  15. Ittay DrorMay 1, 2008
  16. Jeff KingMay 1, 2008
  17. Ittay DrorMay 1, 2008
  18. David TweedMay 1, 2008
  19. Avery PennarunMay 1, 2008
  20. Jeff KingMay 1, 2008
  21. Avery PennarunMay 1, 2008
  22. Jeff KingMay 1, 2008
  23. Avery PennarunMay 1, 2008
  24. Jeff KingMay 1, 2008
  25. Steven GrimmMay 1, 2008
  26. Jeff KingMay 1, 2008
  27. merge renamed files/directories? (was: Re: detecting rename->commit->modify->commit)Ittay Dror, May 3, 2008
  28. Avery PennarunMay 3, 2008
  29. Ittay DrorMay 4, 2008
  30. Jakub NarebskiMay 4, 2008
  31. Avery PennarunMay 5, 2008
  32. Robin RosenbergMay 5, 2008
  33. Linus TorvaldsMay 5, 2008
  34. Steven GrimmMay 5, 2008
  35. Linus TorvaldsMay 6, 2008
  36. Linus TorvaldsMay 6, 2008
  37. Theodore TsoMay 6, 2008
  38. Linus TorvaldsMay 6, 2008
  39. Linus TorvaldsMay 6, 2008
  40. Ittay DrorMay 6, 2008
  41. Linus TorvaldsMay 6, 2008
  42. Avery PennarunMay 6, 2008
  43. Shawn O. PearceMay 6, 2008
  44. Avery PennarunMay 6, 2008
  45. Shawn O. PearceMay 6, 2008
  46. Linus TorvaldsMay 6, 2008
  47. Jeff KingMay 8, 2008
  48. Sitaram ChamartyMay 1, 2008
  49. Ittay DrorMay 1, 2008

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.