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

Re: [PATCH 3/3] Allow whole-tree operations to be started from a subdirectory

From
Steven Grimm <koreth@midwinter.com>
Date
Jan 14, 2007, 18:13 UTC
Message-ID
<45AA72E1.6060701@midwinter.com>
In-Reply-To
<7virfaie1m.fsf@assigned-by-dhcp.cox.net>
Junio C Hamano wrote:
Show 9 quoted lines
> I consider that being in a subdirectory means the user is in the
> middle of actively working on something in that area.  Honestly
> I do not understand why anybody would want to run the five
> whole-tree commands under discussion (merge, pull, rebase,
> revert and cherry-pick) in the middle of doing something, so
> from the theoretical point of view I would agree that it makes
> sense for the commands to internally cd-up to do their work, I
> am not sure how much practical value it would add.
>   

Here's one use case for merge/pull/rebase that is, if not an everyday thing, then at least fairly common in my group: Person B fixes a bug in some code that's causing problems for the code person A is working on. Person A is not at a stopping point in his own work yet, but wants to get the fix.

Revert and cherry-pick are less common here but consider this: some people want submodule support because they're working on a specific part of the tree. They only cd into a subdirectory because there's no way for them to make that subdirectory the top level of their local repository. The fact that there are siblings of their current directory is just an artifact of the project layout and has nothing to do with what they're doing at the moment.

For example, on a simple Web project, the UI designers will always cd to the "html" directory. They get "src" and "lib" too, but if they had a choice they wouldn't. When they cherry-pick, it'll always be a cherry-pick of their own stuff (in the html directory) and likewise with a revert, so they have no reason to cd-up for any of those operations if the tool doesn't demand it. And perhaps less obvious: in a typical shared integration area setup, they will never have any conflicts anywhere but their subdirectory since the other directories will always be able to fast-forward merge. So cd-up isn't useful for them even in the case of merge conflicts.

-Steve
Previous: Junio C HamanoNext: Steven Grimm
Message 23 of 28 in “What's in git.git and announcing GIT v1.5.0-rc1”
  1. Junio C HamanoJan 12, 2007
  2. reflog-expire: brown paper bag fix.Junio C Hamano, Jan 12, 2007
  3. Shawn O. PearceJan 12, 2007
  4. Andy ParkinsJan 12, 2007
  5. Friendlier error message for commands that can't be run from a subdirectory.koreth@midwinter.com, Jan 12, 2007
  6. Steven GrimmJan 12, 2007
  7. Change to the repository's root directory if needed.koreth@midwinter.com, Jan 12, 2007
  8. Junio C HamanoJan 12, 2007
  9. Steven GrimmJan 12, 2007
  10. Junio C HamanoJan 12, 2007
  11. Explain "Not a git repository: '.git'".Junio C Hamano, Jan 12, 2007
  12. Junio C HamanoJan 12, 2007
  13. 1/3 Define cd_to_toplevel shell function in git-sh-setupJunio C Hamano, Jan 12, 2007
  14. 2/3 Use cd_to_toplevel in scripts that implement it by hand.Junio C Hamano, Jan 12, 2007
  15. 3/3 Allow whole-tree operations to be started from a subdirectoryJunio C Hamano, Jan 12, 2007
  16. Andy ParkinsJan 13, 2007
  17. Josef WeidendorferJan 14, 2007
  18. Shawn O. PearceJan 14, 2007
  19. Josef WeidendorferJan 14, 2007
  20. Junio C HamanoJan 14, 2007
  21. Steven GrimmJan 14, 2007
  22. Junio C HamanoJan 14, 2007
  23. Steven GrimmJan 14, 2007
  24. Steven GrimmJan 14, 2007
  25. Junio C HamanoJan 14, 2007
  26. Junio C HamanoJan 14, 2007
  27. Andreas EricssonJan 16, 2007
  28. lamikrJan 14, 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.