Avoid extra filelogs entries.
Right now, there are some situations in which localrepo.filecommit can
create filelog entries even though they're not needed. For example:
- permissions for a file have changed;
- qrefresh can create a filelog entry identical to its parent (see the
added test);
- convert-repo creates extra filelog entries in every merge where the
first parent has added files (for example, changeset ebebe9577a1a of
the kernel repo added extra filelog entries to files in the
arch/blackfin directory, even though the merge should only touch the
drivers/ata directory). This makes "hg log file" in a converted repo
less useful than it could be, since it may mention many merges that
don't actually touch that specific file.
They all come from the same basic problem: localrepo.commit (through
filecommit) creates new filelog entries for all files passed to it
(except for some cases during a merge).
Patch and test case provided by Benoit.
This should fix issue351.
; System-wide Mercurial config file. To override these settings on a
; per-user basis, please edit the following file instead, where
; USERNAME is your Windows user name:
; C:\Documents and Settings\USERNAME\Mercurial.ini
[ui]
editor = notepad
; By default, we try to encode and decode all files that do not
; contain ASCII NUL characters. What this means is that we try to set
; line endings to Windows style on update, and to Unix style on
; commit. This lets us cooperate with Linux and Unix users, so
; everybody sees files with their native line endings.
[extensions]
; The win32text extension is available and installed by default. It
; provides built-in Python hooks to perform line ending conversions.
; This is normally much faster than running an external program.
hgext.win32text =
[encode]
; Encode files that don't contain NUL characters.
; ** = cleverencode:
; Alternatively, you can explicitly specify each file extension that
; you want encoded (any you omit will be left untouched), like this:
; *.txt = dumbencode:
[decode]
; Decode files that don't contain NUL characters.
; ** = cleverdecode:
; Alternatively, you can explicitly specify each file extension that
; you want decoded (any you omit will be left untouched), like this:
; **.txt = dumbdecode: