From: Linus Torvalds <torvalds@osdl.org>
To: Carl Worth <cworth@cworth.org>
Cc: git@vger.kernel.org
Subject: Re: "git reset --hard" leaves empty directories that shouldn't exist
Date: Wed, 15 Feb 2006 17:35:21 -0800 (PST) [thread overview]
Message-ID: <Pine.LNX.4.64.0602151720490.22082@g5.osdl.org> (raw)
In-Reply-To: <87y80dhxfd.wl%cworth@cworth.org>
On Tue, 14 Feb 2006, Carl Worth wrote:
>
> I've been exploring the potential for git-sync, and I found some odd
> behavior with "git reset --hard". It appears that if the current tree
> has some directory structure (at least two levels deep) that does not
> exist in the tree being reset to, that empty directories are left
> around after the reset:
"git reset --hard xyz" in many ways is a sledgehammer, and it says "I want
the state at the point of xyz, and I don't care _what_ the heck the
current state is".
Now, that's somewhat problematic, exactly because of that "screw the
current state" thing. It actually tries to remove files (see the
"tmp-exists" thing in the git-reset script), but it's being pretty stupid
about it. It also very definitely will not try to remove subdirectories,
empty or not.
(I say that without being able to read perl, so I might be wrong. Maybe it
tries and just fails).
Anyway, if you want to do the "gentle and smart" thing, you should
probably actually use
git-read-tree -m -u <oldtree> <newtree>
which unlike "git-reset" will gently _update_ the tree from one version to
another (and will error out if your checked-out copy doesn't match the
old tree).
And the gentle way will actually do the right thing wrt subdirectories
(note that it will _not_ remove empty subdirectories if you have left
files - like object files - around that it doesn't know about: that's not
an error, but the unknown file will not, nor the subdirectory, be
removed).
And yes, git-reset should probably do the subdirectory thing too. In the
meantime you should think of it as the brute-force and not very smart way
(in Calvin and Hobbes terms, "git reset" is Moe).
Linus
prev parent reply other threads:[~2006-02-16 1:35 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-02-15 7:51 "git reset --hard" leaves empty directories that shouldn't exist Carl Worth
2006-02-15 8:06 ` Shawn Pearce
2006-02-15 8:09 ` Junio C Hamano
2006-02-16 1:35 ` Linus Torvalds [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Pine.LNX.4.64.0602151720490.22082@g5.osdl.org \
--to=torvalds@osdl.org \
--cc=cworth@cworth.org \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).