Code

Enable reflogs by default in any repository with a working directory.
authorShawn O. Pearce <spearce@spearce.org>
Thu, 14 Dec 2006 22:41:17 +0000 (17:41 -0500)
committerJunio C Hamano <junkio@cox.net>
Sat, 16 Dec 2006 06:31:01 +0000 (22:31 -0800)
commit0bee59186976b1d9e6b2dd77332480c9480131d5
treea25546c23cf5b49c4251f606f58ead8070b30d6c
parentef0a89a604acb7fc2e3c08566641b95b23d87fd6
Enable reflogs by default in any repository with a working directory.

New and experienced Git users alike are finding out too late that
they forgot to enable reflogs in the current repository, and cannot
use the information stored within it to recover from an incorrectly
entered command such as `git reset --hard HEAD^^^` when they really
meant HEAD^^ (aka HEAD~2).

So enable reflogs by default in all future versions of Git, unless
the user specifically disables it with:

  [core]
    logAllRefUpdates = false

in their .git/config or ~/.gitconfig.

We only enable reflogs in repositories that have a working directory
associated with them, as shared/bare repositories do not have
an easy means to prune away old log entries, or may fail logging
entirely if the user's gecos information is not valid during a push.
This heuristic was suggested on the mailing list by Junio.

Documentation was also updated to indicate the new default behavior.
We probably should start to teach usuing the reflog to recover
from mistakes in some of the tutorial material, as new users are
likely to make a few along the way and will feel better knowing
they can recover from them quickly and easily, without fsck-objects'
lost+found features.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Documentation/config.txt
builtin-init-db.c
cache.h
environment.c
t/t1400-update-ref.sh