If plain strcmp is used, as this code did before, the final sorting may end up different from what git-add would do (for example, 'boost' appearing before 'boost-build.jam', because Git sorts as if it were spelled 'boost/'). If the sorting is incorrect like this, Git 1.7.4 insists that unmodified files have been modified. For example, my test repository has these four entries: drwxr-xr-x 199 johnw wheel 6766 Feb 2 17:21 boost -rw-r--r-- 1 johnw wheel 849 Feb 2 17:22 boost-build.jam -rw-r--r-- 1 johnw wheel 989 Feb 2 17:21 boost.css -rw-r--r-- 1 johnw wheel 6308 Feb 2 17:21 boost.png Here is the output from git-ls-tree for these files, in a commit tree created using git-add and git-commit: 100644 blob 8b8775433aef73e9e12609610ae2e35cf1e7ec2c boost-build.jam 100644 blob 986c4050fa96d825a1311c8e871cdcc9a3e0d2c3 boost.css 100644 blob b4d51fcd5c9149fd77f5ca6ed2b6b1b70e8fe24f boost.png 040000 tree 46537eeaa4d577010f19b1c9e940cae9a670ff5c boost Here is the output for the same commit produced using libgit2: 040000 tree c27c0fd1436f28a6ba99acd0a6c17d178ed58288 boost 100644 blob 8b8775433aef73e9e12609610ae2e35cf1e7ec2c boost-build.jam 100644 blob 986c4050fa96d825a1311c8e871cdcc9a3e0d2c3 boost.css 100644 blob b4d51fcd5c9149fd77f5ca6ed2b6b1b70e8fe24f boost.png Due to this reordering, git-status claims the three blobs are always modified, no matter what I do using git-read-tree or git-reset or git-checkout to update the index.
Name |
Last commit
|
Last update |
---|---|---|
.. | ||
block-sha1 | Loading commit data... | |
git2 | Loading commit data... | |
ppc | Loading commit data... | |
unix | Loading commit data... | |
win32 | Loading commit data... | |
blob.c | Loading commit data... | |
blob.h | Loading commit data... | |
bswap.h | Loading commit data... | |
cc-compat.h | Loading commit data... | |
commit.c | Loading commit data... | |
commit.h | Loading commit data... | |
common.h | Loading commit data... | |
delta-apply.c | Loading commit data... | |
delta-apply.h | Loading commit data... | |
dir.h | Loading commit data... | |
errors.c | Loading commit data... | |
filelock.c | Loading commit data... | |
filelock.h | Loading commit data... | |
fileops.c | Loading commit data... | |
fileops.h | Loading commit data... | |
git2.h | Loading commit data... | |
hash.c | Loading commit data... | |
hash.h | Loading commit data... | |
hashtable.c | Loading commit data... | |
hashtable.h | Loading commit data... | |
index.c | Loading commit data... | |
index.h | Loading commit data... | |
map.h | Loading commit data... | |
mingw-compat.h | Loading commit data... | |
msvc-compat.h | Loading commit data... | |
object.c | Loading commit data... | |
odb.c | Loading commit data... | |
odb.h | Loading commit data... | |
odb_loose.c | Loading commit data... | |
odb_pack.c | Loading commit data... | |
oid.c | Loading commit data... | |
refs.c | Loading commit data... | |
refs.h | Loading commit data... | |
repository.c | Loading commit data... | |
repository.h | Loading commit data... | |
revwalk.c | Loading commit data... | |
revwalk.h | Loading commit data... | |
signature.c | Loading commit data... | |
signature.h | Loading commit data... | |
tag.c | Loading commit data... | |
tag.h | Loading commit data... | |
thread-utils.c | Loading commit data... | |
thread-utils.h | Loading commit data... | |
tree.c | Loading commit data... | |
tree.h | Loading commit data... | |
util.c | Loading commit data... | |
util.h | Loading commit data... | |
vector.c | Loading commit data... | |
vector.h | Loading commit data... |