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

Re: [PATCH v2 1/9] t2501: add various tests for removing the current working directory

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Nov 25, 2021, 10:21 UTC
Message-ID
<211125.86fsrkjz5t.gmgdl@evledraar.gmail.com>
In-Reply-To
<38a120f5c0379daabc1f9730039ff7166037410d.1637829556.git.gitgitgadget@gmail.com>
On Thu, Nov 25 2021, Elijah Newren via GitGitGadget wrote:
Show 24 quoted lines
> From: Elijah Newren <newren@gmail.com>
>
> Numerous commands will remove empty working directories, especially if
> they are in the way of placing needed files.  That is normally fine, but
> removing the current working directory can cause confusion for the user
> when they run subsequent commands.  For example, after one git process
> has removed the current working directory, git status/log/diff will all
> abort with the message:
>
>     fatal: Unable to read current working directory: No such file or directory
>
> Since there are several code paths that can result in the current
> working directory being removed, add several tests of various different
> codepaths that check for the behavior we would instead like to see.
> This include a number of new error messages that we will be adding in
> subsequent commits as we implement the desired checks.
>
> Signed-off-by: Elijah Newren <newren@gmail.com>
> ---
>  t/t2501-cwd-empty.sh | 255 +++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 255 insertions(+)
>  create mode 100755 t/t2501-cwd-empty.sh
>
> [...]

As noted on v1 (and particularly if we're going to have something like my proposed alternate "let's not make setup.c die then?" I really think this should positively assert our existing behavior, and we can then update this later for the behavior change.

I got that ~working locally, I think you can squash the below in, and then cherry-pick this version on top in the actual change that adds the "Refusing to remove" behavior change.

I think this really helps to explain the change, and to make sure we test existing behavior.

I added a new test for "rm" with the "-f" flag, and by the "~" in "working" I mean that this worked as I expected aside from the last couple of tests.

I think that's a bug in your existing test that's hidden by the use of test_expect_failure here. I.e. in the clean test we'll exit with:

    [...]
    + git clean -fd -e warnings :/
    warning: failed to remove ./: Invalid argument

A "bug" in the sense that this AFAICT would never have removed that directory anyway since "clean" puts out before, but with your change we'll catch that earlier and emit a new "error". Also do we need ":/" there, isn't "." more obvious? In any case, the updated test below shows that we already punt out in that case, but perhaps it's incomplete. Will "clean" remove these directories in other cases already?

The "status" then had to be removed from the "stash" test, was it leftover debugging cruft?

Finally these are quite repetitive. It would be very welcome to factor these into e.g.:

    test_expect_untracked_dir hard foo/bar/baz -- <command>

Where we just do the common case of "if $1 = hard" we do the setup with "reset --hard", otherwise the "git clean -dxf" etc. Then if it's the "foo/bar/baz" case add the 3x "test_path_is_missing" for that etc.

Another issue: You have a "git cmd | other git cmd" with "| git apply" there, should be moved into two split by a && to not potentially hide an error on the LHS of the pipe.

I think there's also probably numerous missing tests here when it comes to how other commands behaved before/after we removed the CWD. E.g. the case of:

    # in x/
    git rm -r ../x
    git reset ../some-file.txt

Which I noted in another follow-up to v1, i.e. that fails currently due to our path construction in setup.c. I.e. in terms of "selling" the change and showing the greater behavior impact, i.e. we from:

    # works
    git rm -r ../x
    # fails
    git reset ../some-file.txt
To:
    # fails (or keeps x/?)
    git rm -r ../x
    # works
    git reset ../some-file.txt
diff --git a/t/t2501-cwd-empty.sh b/t/t2501-cwd-empty.sh
index 5dfb456a691..f1fb8b4a872 100755
--- a/t/t2501-cwd-empty.sh
+++ b/t/t2501-cwd-empty.sh
@@ -24,7 +24,7 @@ test_expect_success setup '
 	git commit -m dirORfile
 '
 
-test_expect_failure 'checkout does not clean cwd incidentally' '
+test_expect_success 'checkout cleans cwd incidentally' '
 	git checkout foo/bar/baz &&
 	test_path_is_dir foo/bar &&
 
@@ -35,10 +35,10 @@ test_expect_failure 'checkout does not clean cwd incidentally' '
 	) &&
 	test_path_is_missing foo/bar/baz &&
 	test_path_is_missing foo/bar &&
-	test_path_is_dir foo
+	test_path_is_missing foo
 '
 
-test_expect_failure 'checkout fails if cwd needs to be removed' '
+test_expect_success 'checkout if cwd needs to be removed' '
 	git checkout foo/bar/baz &&
 	test_when_finished "git clean -fdx" &&
 
@@ -46,14 +46,14 @@ test_expect_failure 'checkout fails if cwd needs to be removed' '
 	(
 		cd dirORfile &&
 
-		test_must_fail git checkout fd_conflict 2>../error &&
-		grep "Refusing to remove the current working directory" ../error
+		git checkout fd_conflict 2>../error &&
+		grep "Switched to branch" ../error
 	) &&
 
-	test_path_is_dir dirORfile
+	test_path_is_file dirORfile
 '
 
-test_expect_failure 'reset --hard does not clean cwd incidentally' '
+test_expect_success 'reset --hard cleans cwd incidentally' '
 	git checkout foo/bar/baz &&
 	test_path_is_dir foo/bar &&
 
@@ -64,10 +64,10 @@ test_expect_failure 'reset --hard does not clean cwd incidentally' '
 	) &&
 	test_path_is_missing foo/bar/baz &&
 	test_path_is_missing foo/bar &&
-	test_path_is_dir foo
+	test_path_is_missing foo
 '
 
-test_expect_failure 'reset --hard fails if cwd needs to be removed' '
+test_expect_success 'reset --hard succeeds if cwd needs to be removed' '
 	git checkout foo/bar/baz &&
 	test_when_finished "git clean -fdx" &&
 
@@ -75,14 +75,14 @@ test_expect_failure 'reset --hard fails if cwd needs to be removed' '
 	(
 		cd dirORfile &&
 
-		test_must_fail git reset --hard fd_conflict 2>../error &&
-		grep "Refusing to remove.*the current working directory" ../error
+		git reset --hard fd_conflict 2>../error &&
+		test_must_be_empty ../error
 	) &&
 
-	test_path_is_dir dirORfile
+	test_path_is_file dirORfile
 '
 
-test_expect_failure 'merge does not remove cwd incidentally' '
+test_expect_success 'merge removes cwd incidentally' '
 	git checkout foo/bar/baz &&
 	test_when_finished "git clean -fdx" &&
 
@@ -92,24 +92,24 @@ test_expect_failure 'merge does not remove cwd incidentally' '
 	) &&
 
 	test_path_is_missing subdir/file.t &&
-	test_path_is_dir subdir
+	test_path_is_missing subdir
 '
 
-test_expect_failure 'merge fails if cwd needs to be removed' '
+test_expect_success 'merge succeeds if cwd needs to be removed' '
 	git checkout foo/bar/baz &&
 	test_when_finished "git clean -fdx" &&
 
 	mkdir dirORfile &&
 	(
 		cd dirORfile &&
-		test_must_fail git merge fd_conflict 2>../error &&
-		grep "Refusing to remove the current working directory" ../error
+		git merge fd_conflict 2>../error &&
+		test_must_be_empty ../error
 	) &&
 
-	test_path_is_dir dirORfile
+	test_path_is_file dirORfile
 '
 
-test_expect_failure 'cherry-pick does not remove cwd incidentally' '
+test_expect_success 'cherry-pick removes cwd incidentally' '
 	git checkout foo/bar/baz &&
 	test_when_finished "git clean -fdx" &&
 
@@ -119,24 +119,23 @@ test_expect_failure 'cherry-pick does not remove cwd incidentally' '
 	) &&
 
 	test_path_is_missing subdir/file.t &&
-	test_path_is_dir subdir
+	test_path_is_missing subdir
 '
 
-test_expect_failure 'cherry-pick fails if cwd needs to be removed' '
+test_expect_success 'cherry-pick suceeds if cwd needs to be removed' '
 	git checkout foo/bar/baz &&
 	test_when_finished "git clean -fdx" &&
 
 	mkdir dirORfile &&
 	(
 		cd dirORfile &&
-		test_must_fail git cherry-pick fd_conflict 2>../error &&
-		grep "Refusing to remove the current working directory" ../error
+		git cherry-pick fd_conflict 2>../error
 	) &&
 
-	test_path_is_dir dirORfile
+	test_path_is_file dirORfile
 '
 
-test_expect_failure 'rebase does not remove cwd incidentally' '
+test_expect_success 'rebase does removes cwd incidentally' '
 	git checkout foo/bar/baz &&
 	test_when_finished "git clean -fdx" &&
 
@@ -146,24 +145,23 @@ test_expect_failure 'rebase does not remove cwd incidentally' '
 	) &&
 
 	test_path_is_missing subdir/file.t &&
-	test_path_is_dir subdir
+	test_path_is_missing subdir
 '
 
-test_expect_failure 'rebase fails if cwd needs to be removed' '
+test_expect_success 'rebase succeeds if cwd needs to be removed' '
 	git checkout foo/bar/baz &&
 	test_when_finished "git clean -fdx" &&
 
 	mkdir dirORfile &&
 	(
 		cd dirORfile &&
-		test_must_fail git rebase foo/bar/baz fd_conflict 2>../error &&
-		grep "Refusing to remove the current working directory" ../error
+		git rebase foo/bar/baz fd_conflict 2>../error
 	) &&
 
-	test_path_is_dir dirORfile
+	test_path_is_file dirORfile
 '
 
-test_expect_failure 'revert does not remove cwd incidentally' '
+test_expect_success 'revert removes cwd incidentally' '
 	git checkout foo/bar/baz &&
 	test_when_finished "git clean -fdx" &&
 
@@ -173,10 +171,10 @@ test_expect_failure 'revert does not remove cwd incidentally' '
 	) &&
 
 	test_path_is_missing subdir/file.t &&
-	test_path_is_dir subdir
+	test_path_is_missing subdir
 '
 
-test_expect_failure 'revert fails if cwd needs to be removed' '
+test_expect_success 'revert succeeds if cwd needs to be removed' '
 	git checkout fd_conflict &&
 	git revert HEAD &&
 	test_when_finished "git clean -fdx" &&
@@ -184,14 +182,13 @@ test_expect_failure 'revert fails if cwd needs to be removed' '
 	mkdir dirORfile &&
 	(
 		cd dirORfile &&
-		test_must_fail git revert HEAD 2>../error &&
-		grep "Refusing to remove the current working directory" ../error
+		git revert HEAD 2>../error
 	) &&
 
-	test_path_is_dir dirORfile
+	test_path_is_file dirORfile
 '
 
-test_expect_failure 'rm does not remove cwd incidentally' '
+test_expect_success 'rm removes cwd incidentally' '
 	test_when_finished "git reset --hard" &&
 	git checkout foo/bar/baz &&
 
@@ -202,10 +199,24 @@ test_expect_failure 'rm does not remove cwd incidentally' '
 
 	test_path_is_missing foo/bar/baz &&
 	test_path_is_missing foo/bar &&
-	test_path_is_dir foo
+	test_path_is_missing foo
 '
 
-test_expect_failure 'apply does not remove cwd incidentally' '
+test_expect_success 'rm -f removes cwd incidentally' '
+	test_when_finished "git reset --hard" &&
+	git checkout foo/bar/baz &&
+
+	(
+		cd foo &&
+		git rm -f bar/baz.t
+	) &&
+
+	test_path_is_missing foo/bar/baz &&
+	test_path_is_missing foo/bar &&
+	test_path_is_missing foo
+'
+
+test_expect_success 'apply removes cwd incidentally' '
 	test_when_finished "git reset --hard" &&
 	git checkout foo/bar/baz &&
 
@@ -215,10 +226,10 @@ test_expect_failure 'apply does not remove cwd incidentally' '
 	) &&
 
 	test_path_is_missing subdir/file.t &&
-	test_path_is_dir subdir
+	test_path_is_missing subdir
 '
 
-test_expect_failure 'clean does not remove cwd incidentally' '
+test_expect_success 'clean does not remove cwd incidentally (cannot match pathspec)' '
 	git checkout foo/bar/baz &&
 	test_when_finished "git clean -fdx" &&
 
@@ -227,16 +238,15 @@ test_expect_failure 'clean does not remove cwd incidentally' '
 	>untracked/random &&
 	(
 		cd untracked &&
-		git clean -fd -e warnings :/ >../warnings &&
-		grep "Refusing to remove current working directory" ../warnings
+		test_must_fail git clean -fd .
 	) &&
 
-	test_path_is_missing empty &&
+	test_path_is_dir empty &&
 	test_path_is_missing untracked/random &&
 	test_path_is_dir untracked
 '
 
-test_expect_failure 'stash does not remove cwd incidentally' '
+test_expect_success 'stash removes cwd incidentally' '
 	git checkout foo/bar/baz &&
 	test_when_finished "git clean -fdx" &&
 
@@ -244,12 +254,11 @@ test_expect_failure 'stash does not remove cwd incidentally' '
 	>untracked/random &&
 	(
 		cd untracked &&
-		git stash --include-untracked &&
-		git status
+		git stash --include-untracked
 	) &&
 
 	test_path_is_missing untracked/random &&
-	test_path_is_dir untracked
+	test_path_is_missing untracked
 '
 
 test_done
Previous: Elijah Newren via GitGitGadgetNext: Elijah Newren via GitGitGadget
Message 50 of 163 in “Avoid removing the current working directory, even if it becomes empty”
  1. 0/8 Avoid removing the current working directory, even if it becomes emptyElijah Newren via GitGitGadget, Nov 21, 2021
  2. 2/8 repository, setup: introduce the_cwdElijah Newren via GitGitGadget, Nov 21, 2021
  3. Junio C HamanoNov 21, 2021
  4. Elijah NewrenNov 22, 2021
  5. René ScharfeNov 21, 2021
  6. Elijah NewrenNov 22, 2021
  7. 1/8 t2501: add various tests for removing the current working directoryElijah Newren via GitGitGadget, Nov 21, 2021
  8. Ævar Arnfjörð BjarmasonNov 21, 2021
  9. Elijah NewrenNov 23, 2021
  10. Ævar Arnfjörð BjarmasonNov 23, 2021
  11. Elijah NewrenNov 23, 2021
  12. Ævar Arnfjörð BjarmasonNov 25, 2021
  13. 4/8 unpack-trees: add special cwd handlingElijah Newren via GitGitGadget, Nov 21, 2021
  14. 3/8 unpack-trees: refuse to remove the current working directoryElijah Newren via GitGitGadget, Nov 21, 2021
  15. 7/8 stash: do not attempt to remove current working directoryElijah Newren via GitGitGadget, Nov 21, 2021
  16. 6/8 clean: do not attempt to remove current working directoryElijah Newren via GitGitGadget, Nov 21, 2021
  17. Ævar Arnfjörð BjarmasonNov 21, 2021
  18. Elijah NewrenNov 23, 2021
  19. 5/8 symlinks: do not include current working directory in dir removalElijah Newren via GitGitGadget, Nov 21, 2021
  20. René ScharfeNov 21, 2021
  21. Elijah NewrenNov 23, 2021
  22. 8/8 dir: avoid removing the current working directoryElijah Newren via GitGitGadget, Nov 21, 2021
  23. Glen ChooNov 23, 2021
  24. Elijah NewrenNov 23, 2021
  25. Glen ChooNov 23, 2021
  26. Elijah NewrenNov 23, 2021
  27. Glen ChooNov 23, 2021
  28. Junio C HamanoNov 23, 2021
  29. Elijah NewrenNov 23, 2021
  30. Junio C HamanoNov 24, 2021
  31. Elijah NewrenNov 23, 2021
  32. Glen ChooNov 24, 2021
  33. Junio C HamanoNov 24, 2021
  34. Ævar Arnfjörð BjarmasonNov 24, 2021
  35. Elijah NewrenNov 24, 2021
  36. Ævar Arnfjörð BjarmasonNov 24, 2021
  37. Philip OakleyNov 24, 2021
  38. Junio C HamanoNov 24, 2021
  39. Philip OakleyNov 25, 2021
  40. Ævar Arnfjörð BjarmasonNov 25, 2021
  41. Ævar Arnfjörð BjarmasonNov 24, 2021
  42. Elijah NewrenNov 25, 2021
  43. Ævar Arnfjörð BjarmasonNov 25, 2021
  44. The overhead of bin-wrappers/ (was: [PATCH 8/8] dir: avoid removing the current working directory)Ævar Arnfjörð Bjarmason, Nov 26, 2021
  45. Elijah NewrenNov 25, 2021
  46. Junio C HamanoNov 24, 2021
  47. Junio C HamanoNov 21, 2021
  48. 0/9 Avoid removing the current working directory, even if it becomes emptyElijah Newren via GitGitGadget, Nov 25, 2021
  49. 1/9 t2501: add various tests for removing the current working directoryElijah Newren via GitGitGadget, Nov 25, 2021
  50. Ævar Arnfjörð BjarmasonNov 25, 2021
  51. 2/9 setup: introduce startup_info->original_cwdElijah Newren via GitGitGadget, Nov 25, 2021
  52. Ævar Arnfjörð BjarmasonNov 25, 2021
  53. Elijah NewrenNov 26, 2021
  54. Junio C HamanoNov 26, 2021
  55. Elijah NewrenNov 26, 2021
  56. Derrick StoleeNov 29, 2021
  57. Junio C HamanoNov 29, 2021
  58. Elijah NewrenNov 29, 2021
  59. Derrick StoleeNov 29, 2021
  60. 3/9 unpack-trees: refuse to remove startup_info->original_cwdElijah Newren via GitGitGadget, Nov 25, 2021
  61. Ævar Arnfjörð BjarmasonNov 25, 2021
  62. Elijah NewrenNov 26, 2021
  63. Derrick StoleeNov 29, 2021
  64. Elijah NewrenNov 29, 2021
  65. 4/9 unpack-trees: add special cwd handlingElijah Newren via GitGitGadget, Nov 25, 2021
  66. Derrick StoleeNov 29, 2021
  67. Elijah NewrenNov 29, 2021
  68. 5/9 symlinks: do not include startup_info->original_cwd in dir removalElijah Newren via GitGitGadget, Nov 25, 2021
  69. 7/9 stash: do not attempt to remove startup_info->original_cwdElijah Newren via GitGitGadget, Nov 25, 2021
  70. Ævar Arnfjörð BjarmasonNov 25, 2021
  71. Elijah NewrenNov 26, 2021
  72. 6/9 clean: do not attempt to remove startup_info->original_cwdElijah Newren via GitGitGadget, Nov 25, 2021
  73. 8/9 dir: avoid incidentally removing the original_cwd in remove_path()Elijah Newren via GitGitGadget, Nov 25, 2021
  74. 9/9 dir: new flag to remove_dir_recurse() to spare the original_cwdElijah Newren via GitGitGadget, Nov 25, 2021
  75. 00/11 Avoid removing the current working directory, even if it becomes emptyElijah Newren via GitGitGadget, Nov 26, 2021
  76. 01/11 t2501: add various tests for removing the current working directoryElijah Newren via GitGitGadget, Nov 26, 2021
  77. Ævar Arnfjörð BjarmasonNov 27, 2021
  78. Elijah NewrenNov 27, 2021
  79. 02/11 setup: introduce startup_info->original_cwdElijah Newren via GitGitGadget, Nov 26, 2021
  80. Ævar Arnfjörð BjarmasonNov 27, 2021
  81. Elijah NewrenNov 27, 2021
  82. Ævar Arnfjörð BjarmasonNov 27, 2021
  83. Elijah NewrenNov 27, 2021
  84. Ævar Arnfjörð BjarmasonNov 28, 2021
  85. Elijah NewrenNov 29, 2021
  86. 03/11 unpack-trees: refuse to remove startup_info->original_cwdElijah Newren via GitGitGadget, Nov 26, 2021
  87. 04/11 unpack-trees: add special cwd handlingElijah Newren via GitGitGadget, Nov 26, 2021
  88. 05/11 symlinks: do not include startup_info->original_cwd in dir removalElijah Newren via GitGitGadget, Nov 26, 2021
  89. 06/11 clean: do not attempt to remove startup_info->original_cwdElijah Newren via GitGitGadget, Nov 26, 2021
  90. 10/11 dir: new flag to remove_dir_recurse() to spare the original_cwdElijah Newren via GitGitGadget, Nov 26, 2021
  91. 07/11 rebase: do not attempt to remove startup_info->original_cwdElijah Newren via GitGitGadget, Nov 26, 2021
  92. Derrick StoleeNov 29, 2021
  93. Elijah NewrenNov 29, 2021
  94. Derrick StoleeNov 29, 2021
  95. 09/11 dir: avoid incidentally removing the original_cwd in remove_path()Elijah Newren via GitGitGadget, Nov 26, 2021
  96. 08/11 stash: do not attempt to remove startup_info->original_cwdElijah Newren via GitGitGadget, Nov 26, 2021
  97. 11/11 t2501: simplify the tests since we can now assume desired behaviorElijah Newren via GitGitGadget, Nov 26, 2021
  98. Derrick StoleeNov 29, 2021
  99. 00/11 Avoid removing the current working directory, even if it becomes emptyElijah Newren via GitGitGadget, Nov 29, 2021
  100. 06/11 clean: do not attempt to remove startup_info->original_cwdElijah Newren via GitGitGadget, Nov 29, 2021
  101. 04/11 unpack-trees: add special cwd handlingElijah Newren via GitGitGadget, Nov 29, 2021
  102. 10/11 dir: new flag to remove_dir_recurse() to spare the original_cwdElijah Newren via GitGitGadget, Nov 29, 2021
  103. 05/11 symlinks: do not include startup_info->original_cwd in dir removalElijah Newren via GitGitGadget, Nov 29, 2021
  104. 08/11 stash: do not attempt to remove startup_info->original_cwdElijah Newren via GitGitGadget, Nov 29, 2021
  105. 03/11 unpack-trees: refuse to remove startup_info->original_cwdElijah Newren via GitGitGadget, Nov 29, 2021
  106. 07/11 rebase: do not attempt to remove startup_info->original_cwdElijah Newren via GitGitGadget, Nov 29, 2021
  107. 09/11 dir: avoid incidentally removing the original_cwd in remove_path()Elijah Newren via GitGitGadget, Nov 29, 2021
  108. 01/11 t2501: add various tests for removing the current working directoryElijah Newren via GitGitGadget, Nov 29, 2021
  109. Junio C HamanoNov 30, 2021
  110. Elijah NewrenNov 30, 2021
  111. 11/11 t2501: simplify the tests since we can now assume desired behaviorElijah Newren via GitGitGadget, Nov 29, 2021
  112. 02/11 setup: introduce startup_info->original_cwdElijah Newren via GitGitGadget, Nov 29, 2021
  113. Eric SunshineNov 29, 2021
  114. Elijah NewrenNov 30, 2021
  115. 00/11 Avoid removing the current working directory, even if it becomes emptyElijah Newren via GitGitGadget, Dec 1, 2021
  116. 01/11 t2501: add various tests for removing the current working directoryElijah Newren via GitGitGadget, Dec 1, 2021
  117. 02/11 setup: introduce startup_info->original_cwdElijah Newren via GitGitGadget, Dec 1, 2021
  118. 03/11 unpack-trees: refuse to remove startup_info->original_cwdElijah Newren via GitGitGadget, Dec 1, 2021
  119. 04/11 unpack-trees: add special cwd handlingElijah Newren via GitGitGadget, Dec 1, 2021
  120. 05/11 symlinks: do not include startup_info->original_cwd in dir removalElijah Newren via GitGitGadget, Dec 1, 2021
  121. 06/11 clean: do not attempt to remove startup_info->original_cwdElijah Newren via GitGitGadget, Dec 1, 2021
  122. 07/11 rebase: do not attempt to remove startup_info->original_cwdElijah Newren via GitGitGadget, Dec 1, 2021
  123. [Bug] Rebase from worktree subdir is broken (was Re: [PATCH v5 07/11] rebase: do not attempt to remove startup_info->original_cwd)Glen Choo, Jan 25, 2022
  124. Elijah NewrenJan 25, 2022
  125. Glen ChooJan 26, 2022
  126. Elijah NewrenJan 26, 2022
  127. Eric SunshineJan 26, 2022
  128. Eric SunshineJan 26, 2022
  129. Elijah NewrenJan 26, 2022
  130. Glen ChooJan 26, 2022
  131. Elijah NewrenJan 26, 2022
  132. Phillip WoodJan 26, 2022
  133. Eric SunshineJan 26, 2022
  134. Phillip WoodJan 27, 2022
  135. Elijah NewrenJan 27, 2022
  136. Eric SunshineFeb 5, 2022
  137. Eric SunshineFeb 5, 2022
  138. Elijah NewrenFeb 5, 2022
  139. 08/11 stash: do not attempt to remove startup_info->original_cwdElijah Newren via GitGitGadget, Dec 1, 2021
  140. 09/11 dir: avoid incidentally removing the original_cwd in remove_path()Elijah Newren via GitGitGadget, Dec 1, 2021
  141. 10/11 dir: new flag to remove_dir_recurse() to spare the original_cwdElijah Newren via GitGitGadget, Dec 1, 2021
  142. 11/11 t2501: simplify the tests since we can now assume desired behaviorElijah Newren via GitGitGadget, Dec 1, 2021
  143. Derrick StoleeDec 7, 2021
  144. Ævar Arnfjörð BjarmasonDec 7, 2021
  145. Derrick StoleeDec 7, 2021
  146. Ævar Arnfjörð BjarmasonDec 8, 2021
  147. Elijah NewrenDec 7, 2021
  148. Derrick StoleeDec 7, 2021
  149. 00/11 Avoid removing the current working directory, even if it becomes emptyElijah Newren via GitGitGadget, Dec 9, 2021
  150. 01/11 t2501: add various tests for removing the current working directoryElijah Newren via GitGitGadget, Dec 9, 2021
  151. Ævar Arnfjörð BjarmasonMar 11, 2022
  152. 02/11 setup: introduce startup_info->original_cwdElijah Newren via GitGitGadget, Dec 9, 2021
  153. 03/11 unpack-trees: refuse to remove startup_info->original_cwdElijah Newren via GitGitGadget, Dec 9, 2021
  154. 04/11 unpack-trees: add special cwd handlingElijah Newren via GitGitGadget, Dec 9, 2021
  155. 06/11 clean: do not attempt to remove startup_info->original_cwdElijah Newren via GitGitGadget, Dec 9, 2021
  156. 05/11 symlinks: do not include startup_info->original_cwd in dir removalElijah Newren via GitGitGadget, Dec 9, 2021
  157. 07/11 rebase: do not attempt to remove startup_info->original_cwdElijah Newren via GitGitGadget, Dec 9, 2021
  158. 08/11 stash: do not attempt to remove startup_info->original_cwdElijah Newren via GitGitGadget, Dec 9, 2021
  159. 09/11 dir: avoid incidentally removing the original_cwd in remove_path()Elijah Newren via GitGitGadget, Dec 9, 2021
  160. 10/11 dir: new flag to remove_dir_recurse() to spare the original_cwdElijah Newren via GitGitGadget, Dec 9, 2021
  161. 11/11 t2501: simplify the tests since we can now assume desired behaviorElijah Newren via GitGitGadget, Dec 9, 2021
  162. Phillip WoodNov 30, 2021
  163. Elijah NewrenDec 1, 2021

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.