On Sun, 2010-07-11 at 11:41 -0700, Junio C Hamano wrote: > What problem are you guys really trying to solve? Almost every porcelain git operation is, in general, "safe". Safety is defined as "will not lose data". I tried to come up with a list of "unsafe" commands recently, and others in #git pointed out that a lot of commands could be made safe by inserting "wait 90 days" into various points. Other than that, there's reset --hard. That's pretty damn safe, in my opinion. The reflog is the safety-net which allows us to give users help without worrying about (as we might in other VCSs) someone typing a command slightly wrong and blowing away their repository. "Don't worry, you aren't going to break it" is a git truism which helps us to encourage git newbies to experiment a little. Even history rewriting is a "safe" operation. Personally, I thought "git branch -d" was quite safe enough, as the HEAD reflog would still have a copy of the tip, but as was pointed out to me, this would only be there if the branch in question had been checked-out recently, and of course the reflog for that branch would also be destroyed. I don't really mind the second half of that, but if we're going to solve one problem, why not solve both? The main thing which is lost when a ref is deleted (assuming no gc, which doesn't happen during a delete without anything else happening) is the association between the various objects which will show up during "git fsck" and the name of the ref which was deleted. Without that loss of association the conversation can move from: "don't panic! If you haven't done anything else yet, you can type "git fsck" and go through the list of dangling commits one by one until you find it. Disable automatic garbage collection in the mean-time just to be safe." to (wishful thinking): "don't panic! try typing "git restore-ref -i" and select the branch you deleted" What's really problem I'm really trying to solve? I suppose part is the "I want porcelain commands to be safe, at least for 30 days", and the rest is that I like having more ways to have a conversation which starts off in panic end with "oh, thanks! git is awesome!" -- -- Will -- 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