Matthieu Moy <Matthieu.Moy@xxxxxxxxxxxxxxx> writes: > I think this is the expected behavior. push will create new objects that > are not referenced until the ref is updated (at the very end). prune can > run concurrently since creating and deleting objects is done in a > lockless way (only the ref update needs a lock). > > Still, this is not the *documented* behavior, and an easy way to corrupt > a repo should be very explicitly documented as very dangerous, and the > precautions to take when using it should be explained clearly. Yeah, I think this paragraph in the user-manual is the only thing that mentions it: Anyway, once you are sure that you're not interested in any dangling state, you can just prune all unreachable objects: ------------------------------------------------ $ git prune ------------------------------------------------ and they'll be gone. (You should only run `git prune` on a quiescent repository--it's kind of like doing a filesystem fsck recovery: you don't want to do that while the filesystem is mounted. Something along this line, perhaps? Documentation/git-gc.txt | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Documentation/git-gc.txt b/Documentation/git-gc.txt index 5223498..fa15104 100644 --- a/Documentation/git-gc.txt +++ b/Documentation/git-gc.txt @@ -63,8 +63,11 @@ automatic consolidation of packs. --prune=<date>:: Prune loose objects older than date (default is 2 weeks ago, overridable by the config variable `gc.pruneExpire`). - --prune=all prunes loose objects regardless of their age. - --prune is on by default. + --prune=all prunes loose objects regardless of their age (do + not use --prune=all unless you know exactly what you are doing. + Unless the repository is quiescent, you will lose newly created + objects that haven't been anchored with the refs and end up + corrupting your repository). --prune is on by default. --no-prune:: Do not prune any loose objects. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html