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

Re: [PATCH v2 00/11] git worktree (re)move

From
Duy Nguyen <pclouds@gmail.com>
Date
Nov 29, 2016, 12:17 UTC
Message-ID
<CACsJy8DhAe3Br06p8i46UUhtnq5GzJGxHsp6AG4iXcg4P+g4nA@mail.gmail.com>
In-Reply-To
<73836804-a581-85a4-b0c0-2aa46a7f9b8d@kdbg.org>
On Tue, Nov 29, 2016 at 4:25 AM, Johannes Sixt <j6t@kdbg.org> wrote:
Show 30 quoted lines
> Am 28.11.2016 um 21:20 schrieb Junio C Hamano:
>>
>> Junio C Hamano <gitster@pobox.com> writes:
>>
>>> Does this round address the issue raised in
>>>
>>>
>>> http://public-inbox.org/git/alpine.DEB.2.20.1611161041040.3746@virtualbox
>>>
>>> by Dscho?
>>>
>>> Even if you are not tracking a fifo, for example, your working tree
>>> may have one created in t/trash* directory during testing, and
>>> letting platform "cp -r" taking care of it (if that is possible---I
>>> didn't look at the code that calls busybox copy to see if you are
>>> doing something exotic or just blindly copying everything in the
>>> directory) may turn out to be a more portable way to do this, and I
>>> suspect that the cost of copying one whole-tree would dominate the
>>> run_command() overhead.
>>
>>
>> Please do not take the above as me saying "you must spawn the
>> platform cp -r".
>
>
> copy_dir_recursively is used in 'worktree move' when the move is across file
> systems. My stance on it is to punt in this case. *I* would not trust Git,
> or any other program that is not *specifically* made to copy a whole
> directory structure, to get all cases right when a simple rename() is not
> sufficent.

This is why I did not write new copy code. The code was from busybox, probably battle tested for many years now. Of course bugs can slip in when I integrated it to git.

> And, uh, oh, it does a remove_dir_recursively() after it has
> finshed copying. No, Git is not a tool to move directories, thank you very
> much!

I guess you won't like my (unsent) patch for moving .git dir either ;-) which does make me nervous. The thing is, these operations require some more modification in .git. We can't ask the user to "move this directory yourself, then come back to me and I will fix up the rest in .git". First step "only support moving within the same filesystem" works for me. But I don't know how rename() works on Windows...

-- 
Duy
Previous: Johannes SixtNext: Duy Nguyen
Message 29 of 39 in “git worktree (re)move”
  1. 00/11 git worktree (re)moveNguyễn Thái Ngọc Duy, Nov 12, 2016
  2. 06/11 worktree.c: add validate_worktree()Nguyễn Thái Ngọc Duy, Nov 12, 2016
  3. 02/11 copy.c: delete unused code in copy_file()Nguyễn Thái Ngọc Duy, Nov 12, 2016
  4. 03/11 copy.c: convert bb_(p)error_msg to error(_errno)Nguyễn Thái Ngọc Duy, Nov 12, 2016
  5. 07/11 worktree.c: add update_worktree_location()Nguyễn Thái Ngọc Duy, Nov 12, 2016
  6. 01/11 copy.c: import copy_file() from busyboxNguyễn Thái Ngọc Duy, Nov 12, 2016
  7. 05/11 copy.c: convert copy_file() to copy_dir_recursively()Nguyễn Thái Ngọc Duy, Nov 12, 2016
  8. 04/11 copy.c: style fixNguyễn Thái Ngọc Duy, Nov 12, 2016
  9. 10/11 worktree move: refuse to move worktrees with submodulesNguyễn Thái Ngọc Duy, Nov 12, 2016
  10. 09/11 worktree move: accept destination as directoryNguyễn Thái Ngọc Duy, Nov 12, 2016
  11. 08/11 worktree move: new commandNguyễn Thái Ngọc Duy, Nov 12, 2016
  12. 11/11 worktree remove: new commandNguyễn Thái Ngọc Duy, Nov 12, 2016
  13. 00/11 git worktree (re)moveNguyễn Thái Ngọc Duy, Nov 28, 2016
  14. 01/11 copy.c: import copy_file() from busyboxNguyễn Thái Ngọc Duy, Nov 28, 2016
  15. 02/11 copy.c: delete unused code in copy_file()Nguyễn Thái Ngọc Duy, Nov 28, 2016
  16. 03/11 copy.c: convert bb_(p)error_msg to error(_errno)Nguyễn Thái Ngọc Duy, Nov 28, 2016
  17. 04/11 copy.c: style fixNguyễn Thái Ngọc Duy, Nov 28, 2016
  18. 05/11 copy.c: convert copy_file() to copy_dir_recursively()Nguyễn Thái Ngọc Duy, Nov 28, 2016
  19. 06/11 worktree.c: add validate_worktree()Nguyễn Thái Ngọc Duy, Nov 28, 2016
  20. 07/11 worktree.c: add update_worktree_location()Nguyễn Thái Ngọc Duy, Nov 28, 2016
  21. 08/11 worktree move: new commandNguyễn Thái Ngọc Duy, Nov 28, 2016
  22. 09/11 worktree move: accept destination as directoryNguyễn Thái Ngọc Duy, Nov 28, 2016
  23. 10/11 worktree move: refuse to move worktrees with submodulesNguyễn Thái Ngọc Duy, Nov 28, 2016
  24. Stefan BellerDec 19, 2016
  25. 11/11 worktree remove: new commandNguyễn Thái Ngọc Duy, Nov 28, 2016
  26. Junio C HamanoNov 28, 2016
  27. Junio C HamanoNov 28, 2016
  28. Johannes SixtNov 28, 2016
  29. Duy NguyenNov 29, 2016
  30. Duy NguyenNov 29, 2016
  31. Duy NguyenNov 29, 2016
  32. Junio C HamanoNov 29, 2016
  33. Stefan BellerNov 30, 2016
  34. Johannes SixtNov 29, 2016
  35. Duy NguyenNov 30, 2016
  36. Duy NguyenNov 16, 2016
  37. Duy NguyenNov 16, 2016
  38. Junio C HamanoNov 16, 2016
  39. Junio C HamanoNov 16, 2016

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.