{"thread":{"id":"502","subject":"[PATCH] fix compare symlink against readlink not data","startedAt":"2005-05-06T13:45:01Z","lastAt":"2005-05-06T17:19:51Z","messageCount":9,"participants":["Kay Sievers","Greg KH","Junio C Hamano","Linus Torvalds"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"2667","messageId":"20050506134501.GA11430@vrfy.org","threadId":"502","inReplyTo":null,"subject":"[PATCH] fix compare symlink against readlink not data","fromName":"Kay Sievers","fromEmail":"kay.sievers@vrfy.org","sentAt":"2005-05-06T13:45:01Z","receivedAt":"2005-05-06T13:45:01Z","isPatch":true,"sender":{"key":"kay.sievers@vrfy.org","avatar":null},"body":"Fix update-cache to compare the blob of a symlink against the link-target\nand not the file it points to. Also ignore all permissions applied to\nlinks.\nThanks to Greg for recognizing this while he added our list of symlinks\nback to the udev repository.\n\nSigned-off-by: Kay Sievers <kay.sievers@vrfy.org>\n---\n\n--- a/diff-files.c\n+++ b/diff-files.c\n@@ -111,7 +111,7 @@ int main(int argc, char **argv)\n \t\t\tcontinue;\n \t\t}\n  \n-\t\tif (stat(ce->name, &st) < 0) {\n+\t\tif (lstat(ce->name, &st) < 0) {\n \t\t\tif (errno != ENOENT) {\n \t\t\t\tperror(ce->name);\n \t\t\t\tcontinue;\n--- a/read-cache.c\n+++ b/read-cache.c\n@@ -16,6 +16,9 @@ int cache_match_stat(struct cache_entry \n \tswitch (ntohl(ce->ce_mode) & S_IFMT) {\n \tcase S_IFREG:\n \t\tchanged |= !S_ISREG(st->st_mode) ? TYPE_CHANGED : 0;\n+\t\t/* We consider only the owner x bit to be relevant for \"mode changes\" */\n+\t\tif (0100 & (ntohl(ce->ce_mode) ^ st->st_mode))\n+\t\t\tchanged |= MODE_CHANGED;\n \t\tbreak;\n \tcase S_IFLNK:\n \t\tchanged |= !S_ISLNK(st->st_mode) ? TYPE_CHANGED : 0;\n@@ -43,9 +46,6 @@ int cache_match_stat(struct cache_entry \n \tif (ce->ce_uid != htonl(st->st_uid) ||\n \t    ce->ce_gid != htonl(st->st_gid))\n \t\tchanged |= OWNER_CHANGED;\n-\t/* We consider only the owner x bit to be relevant for \"mode changes\" */\n-\tif (0100 & (ntohl(ce->ce_mode) ^ st->st_mode))\n-\t\tchanged |= MODE_CHANGED;\n \tif (ce->ce_dev != htonl(st->st_dev) ||\n \t    ce->ce_ino != htonl(st->st_ino))\n \t\tchanged |= INODE_CHANGED;\n--- a/update-cache.c\n+++ b/update-cache.c\n@@ -64,7 +64,7 @@ static int add_file_to_cache_1(char *pat\n \tstruct stat st;\n \tint fd;\n \tunsigned int len;\n-\tchar target[1024];\n+\tchar *target;\n \n \tif (lstat(path, &st) < 0) {\n \t\tif (errno == ENOENT || errno == ENOTDIR) {\n@@ -90,11 +90,14 @@ static int add_file_to_cache_1(char *pat\n \t\t\treturn -1;\n \t\tbreak;\n \tcase S_IFLNK:\n-\t\tlen = readlink(path, target, sizeof(target));\n-\t\tif (len == -1 || len+1 > sizeof(target))\n+\t\ttarget = xmalloc(st.st_size+1);\n+\t\tif (readlink(path, target, st.st_size+1) != st.st_size) {\n+\t\t\tfree(target);\n \t\t\treturn -1;\n-\t\tif (write_sha1_file(target, len, \"blob\", ce->sha1))\n+\t\t}\n+\t\tif (write_sha1_file(target, st.st_size, \"blob\", ce->sha1))\n \t\t\treturn -1;\n+\t\tfree(target);\n \t\tbreak;\n \tdefault:\n \t\treturn -1;\n@@ -163,6 +166,32 @@ static int compare_data(struct cache_ent\n \treturn match;\n }\n \n+static int compare_link(struct cache_entry *ce, unsigned long expected_size)\n+{\n+\tint match = -1;\n+\tchar *target;\n+\tvoid *buffer;\n+\tunsigned long size;\n+\tchar type[10];\n+\tint len;\n+\ttarget = xmalloc(expected_size);\n+\tlen = readlink(ce->name, target, expected_size);\n+\tif (len != expected_size ) {\n+\t\tfree(target);\n+\t\treturn -1;\n+\t}\n+\tbuffer = read_sha1_file(ce->sha1, type, &size);\n+\tif (!buffer) {\n+\t\tfree(target);\n+\t\treturn -1;\n+\t}\n+\tif (size == expected_size)\n+\t\tmatch = memcmp(buffer, target, size);\n+\tfree(buffer);\n+\tfree(target);\n+\treturn match;\n+}\n+\n /*\n  * \"refresh\" does not calculate a new sha1 file or bring the\n  * cache up-to-date for mode/content changes. But what it\n@@ -194,8 +223,18 @@ static struct cache_entry *refresh_entry\n \tif (changed & (MODE_CHANGED | TYPE_CHANGED))\n \t\treturn ERR_PTR(-EINVAL);\n \n-\tif (compare_data(ce, st.st_size))\n+\tswitch (st.st_mode & S_IFMT) {\n+\tcase S_IFREG:\n+\t\tif (compare_data(ce, st.st_size))\n+\t\t\treturn ERR_PTR(-EINVAL);\n+\t\tbreak;\n+\tcase S_IFLNK:\n+\t\tif (compare_link(ce, st.st_size))\n+\t\t\treturn ERR_PTR(-EINVAL);\n+\t\tbreak;\n+\tdefault:\n \t\treturn ERR_PTR(-EINVAL);\n+\t}\n \n \tcache_changed = 1;\n \tsize = ce_size(ce);\n\n"},{"id":"2670","messageId":"20050506160359.GB6904@kroah.com","threadId":"502","inReplyTo":"20050506134501.GA11430@vrfy.org","subject":"Re: [PATCH] fix compare symlink against readlink not data","fromName":"Greg KH","fromEmail":"greg@kroah.com","sentAt":"2005-05-06T16:03:59Z","receivedAt":"2005-05-06T16:03:59Z","isPatch":true,"sender":{"key":"greg@kroah.com","avatar":"https://gravatar.com/avatar/5bb5aa0cc2e01c00ec899d11130c07796bc186e465bae57bc34873b13b72c7c8?d=mp&s=160"},"body":"On Fri, May 06, 2005 at 03:45:01PM +0200, Kay Sievers wrote:\n> Fix update-cache to compare the blob of a symlink against the link-target\n> and not the file it points to. Also ignore all permissions applied to\n> links.\n> Thanks to Greg for recognizing this while he added our list of symlinks\n> back to the udev repository.\n\nHm, even with this patch applied (it's in Linus's tree right now), I\nstill get the following with a clean checked out udev tree:\n $ cg-diff\n Index: test/sys/block/cciss!c0d0/device\n ===================================================================\n Index: test/sys/block/rd!c0d0/device\n ===================================================================\n Index: test/sys/block/sda/device\n ===================================================================\n Index: test/sys/bus/pci/devices/0000:00:09.0\n ===================================================================\n Index: test/sys/bus/pci/devices/0000:00:1e.0\n ===================================================================\n Index: test/sys/bus/pci/devices/0000:02:05.0\n ===================================================================\n Index: test/sys/bus/pci/drivers/aic7xxx/0000:02:05.0\n ===================================================================\n Index: test/sys/bus/scsi/devices/0:0:0:0\n ===================================================================\n Index: test/sys/bus/scsi/drivers/sd/0:0:0:0\n ===================================================================\n Index: test/sys/bus/usb-serial/devices/ttyUSB0\n ===================================================================\n Index: test/sys/bus/usb-serial/drivers/PL-2303/ttyUSB0\n ===================================================================\n Index: test/sys/bus/usb/devices/3-0:1.0\n ===================================================================\n Index: test/sys/bus/usb/devices/3-1\n ===================================================================\n Index: test/sys/bus/usb/devices/3-1:1.0\n ===================================================================\n Index: test/sys/bus/usb/devices/usb3\n ===================================================================\n Index: test/sys/bus/usb/drivers/hub/3-0:1.0\n ===================================================================\n Index: test/sys/bus/usb/drivers/pl2303/3-1:1.0\n ===================================================================\n Index: test/sys/bus/usb/drivers/usb/3-1\n ===================================================================\n Index: test/sys/bus/usb/drivers/usb/usb3\n ===================================================================\n Index: test/sys/class/tty/ttyUSB0/device\n ===================================================================\n Index: test/sys/devices/pci0000:00/0000:00:09.0/usb3/3-1/ttyUSB0/driver\n ===================================================================\n\nAny idea?\n\nthanks,\n\ngreg k-h\n"},{"id":"2675","messageId":"1115396614.32065.23.camel@localhost.localdomain","threadId":"502","inReplyTo":"20050506160359.GB6904@kroah.com","subject":"Re: [PATCH] fix compare symlink against readlink not data","fromName":"Kay Sievers","fromEmail":"kay.sievers@vrfy.org","sentAt":"2005-05-06T16:23:34Z","receivedAt":"2005-05-06T16:23:34Z","isPatch":true,"sender":{"key":"kay.sievers@vrfy.org","avatar":null},"body":"On Fri, 2005-05-06 at 09:03 -0700, Greg KH wrote:\n> On Fri, May 06, 2005 at 03:45:01PM +0200, Kay Sievers wrote:\n> > Fix update-cache to compare the blob of a symlink against the link-target\n> > and not the file it points to. Also ignore all permissions applied to\n> > links.\n> > Thanks to Greg for recognizing this while he added our list of symlinks\n> > back to the udev repository.\n> \n> Hm, even with this patch applied (it's in Linus's tree right now), I\n> still get the following with a clean checked out udev tree:\n>  $ cg-diff\n>  Index: test/sys/block/cciss!c0d0/device\n>  ===================================================================\n\nI can't reproduce this. Are you sure, that the git-core binaries are\ncalled and not the cogito ones?\n\n  git-update-cache --refresh\n  git-diff-cache -r HEAD\nfrom the core-git should print nothing.\n\nThanks,\nKay\n\n"},{"id":"2676","messageId":"7vy8ascod4.fsf@assigned-by-dhcp.cox.net","threadId":"502","inReplyTo":"20050506160359.GB6904@kroah.com","subject":"Re: [PATCH] fix compare symlink against readlink not data","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2005-05-06T16:26:15Z","receivedAt":"2005-05-06T16:26:15Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":">>>>> \"GKH\" == Greg KH <greg@kroah.com> writes:\n\nGKH> On Fri, May 06, 2005 at 03:45:01PM +0200, Kay Sievers wrote:\n>> Thanks to Greg for recognizing this while he added our list of symlinks\n>> back to the udev repository.\n\nGKH> Hm, even with this patch applied (it's in Linus's tree right now), I\nGKH> still get the following with a clean checked out udev tree:\nGKH>  $ cg-diff\nGKH>  Index: test/sys/block/cciss!c0d0/device\nGKH>  ===================================================================\nGKH>  Index: test/sys/block/rd!c0d0/device\nGKH>  ===================================================================\n\nGKH> Any idea?\n\nI do not use Cogito but probably it is this piece of code in\ncg-Xdiffdo.  It is assuming that a valid SHA1 means it can diff\nagainst the filesystem object that resides there.  It used to be\nthe case before symlinks but not anymore.\n\n    mkbanner () {\n            loc=$1; treeid=$2; fname=$3; mode=$4; sha1=$5;\n\n            if [ \"$sha1\" != \"0000000000000000000000000000000000000000\" ]; then\n                    git-cat-file blob $sha1 >$loc\n            else\n                    ln -s \"$(pwd)/$fname\" \"$loc\"\n                    sha1=\"!\"\n            fi\n\nMaybe changing the if to (I'm writing this in e-mail editor so\ncompletely untested) something like:\n\n    if expr \"$sha1\" : '0*$' >/dev/null ||\n       expr \"$mode\" : '.*120000$' >/dev/null\n    then\n        git-cat-file blob \"$sha1\" >$loc\n\nwould help?\n\nAlso could you try the low-level git command, git-diff-cache -p,\nagainst the tree you are comparing?  The built-in diff stuff\nmight get this wrong too.\n\n\n"},{"id":"2678","messageId":"20050506163603.GA17766@kroah.com","threadId":"502","inReplyTo":"1115396614.32065.23.camel@localhost.localdomain","subject":"Re: [PATCH] fix compare symlink against readlink not data","fromName":"Greg KH","fromEmail":"greg@kroah.com","sentAt":"2005-05-06T16:36:04Z","receivedAt":"2005-05-06T16:36:04Z","isPatch":true,"sender":{"key":"greg@kroah.com","avatar":"https://gravatar.com/avatar/5bb5aa0cc2e01c00ec899d11130c07796bc186e465bae57bc34873b13b72c7c8?d=mp&s=160"},"body":"On Fri, May 06, 2005 at 06:23:34PM +0200, Kay Sievers wrote:\n> On Fri, 2005-05-06 at 09:03 -0700, Greg KH wrote:\n> > On Fri, May 06, 2005 at 03:45:01PM +0200, Kay Sievers wrote:\n> > > Fix update-cache to compare the blob of a symlink against the link-target\n> > > and not the file it points to. Also ignore all permissions applied to\n> > > links.\n> > > Thanks to Greg for recognizing this while he added our list of symlinks\n> > > back to the udev repository.\n> > \n> > Hm, even with this patch applied (it's in Linus's tree right now), I\n> > still get the following with a clean checked out udev tree:\n> >  $ cg-diff\n> >  Index: test/sys/block/cciss!c0d0/device\n> >  ===================================================================\n> \n> I can't reproduce this. Are you sure, that the git-core binaries are\n> called and not the cogito ones?\n> \n>   git-update-cache --refresh\n>   git-diff-cache -r HEAD\n> from the core-git should print nothing.\n\nOdd.  If I reclone the whole tree from the udev kernel.org tree, then it\nworks just fine.  If I create a new copy of my local tree, I still have\nthe same problem.  Diffing the trees shows no difference in the objects\nat all...\n\nCan you add a symlink to a local tree and see if you can duplicate this?\n\nthanks,\n\ngreg k-h\n"},{"id":"2679","messageId":"20050506163740.GB17766@kroah.com","threadId":"502","inReplyTo":"7vy8ascod4.fsf@assigned-by-dhcp.cox.net","subject":"Re: [PATCH] fix compare symlink against readlink not data","fromName":"Greg KH","fromEmail":"greg@kroah.com","sentAt":"2005-05-06T16:37:40Z","receivedAt":"2005-05-06T16:37:40Z","isPatch":true,"sender":{"key":"greg@kroah.com","avatar":"https://gravatar.com/avatar/5bb5aa0cc2e01c00ec899d11130c07796bc186e465bae57bc34873b13b72c7c8?d=mp&s=160"},"body":"On Fri, May 06, 2005 at 09:26:15AM -0700, Junio C Hamano wrote:\n> \n> Also could you try the low-level git command, git-diff-cache -p,\n> against the tree you are comparing?  The built-in diff stuff\n> might get this wrong too.\n\nNo, 'git-diff-cache -r HEAD' shows me:\n\n$ git-diff-cache -r HEAD\n*120000->100644 blob    2d78258b1a0fe49afabc8c16a352117df5dc338a->2d78258b1a0fe49afabc8c16a352117df5dc338a      test/sys/block/cciss!c0d0/device\n*120000->100644 blob    2d78258b1a0fe49afabc8c16a352117df5dc338a->2d78258b1a0fe49afabc8c16a352117df5dc338a      test/sys/block/rd!c0d0/device\n*120000->100644 blob    2d78258b1a0fe49afabc8c16a352117df5dc338a->2d78258b1a0fe49afabc8c16a352117df5dc338a      test/sys/block/sda/device\n*120000->100644 blob    1c776568bdc9dc750addd0885dded6b008a44460->1c776568bdc9dc750addd0885dded6b008a44460      test/sys/bus/pci/devices/0000:00:09.0\n*120000->100644 blob    e000c77614a23ad57fed284bd007ed7c1cb7872e->e000c77614a23ad57fed284bd007ed7c1cb7872e      test/sys/bus/pci/devices/0000:00:1e.0\n*120000->100644 blob    630d35bf617944a4ba6afc90ca5176cb342a2662->630d35bf617944a4ba6afc90ca5176cb342a2662      test/sys/bus/pci/devices/0000:02:05.0\n*120000->100644 blob    bd644e0e9d0c2f289bc4a3e3a034d528d5d671cc->bd644e0e9d0c2f289bc4a3e3a034d528d5d671cc      test/sys/bus/pci/drivers/aic7xxx/0000:02:05.0\n*120000->100644 blob    ebb65b3bac36ef935a55a7f1010e4d3a242188eb->ebb65b3bac36ef935a55a7f1010e4d3a242188eb      test/sys/bus/scsi/devices/0:0:0:0\n*120000->100644 blob    239003f712dd9112171e635a44160da1898f5996->239003f712dd9112171e635a44160da1898f5996      test/sys/bus/scsi/drivers/sd/0:0:0:0\n*120000->100644 blob    b7733a68e08e564300212a22c9f81888c12bb55a->b7733a68e08e564300212a22c9f81888c12bb55a      test/sys/bus/usb-serial/devices/ttyUSB0\n*120000->100644 blob    177f109e4899cf4008b9413933392d4f07832fdc->177f109e4899cf4008b9413933392d4f07832fdc      test/sys/bus/usb-serial/drivers/PL-2303/ttyUSB0\n*120000->100644 blob    9137978832942ecce572d376f14244c1588748a2->9137978832942ecce572d376f14244c1588748a2      test/sys/bus/usb/devices/3-0:1.0\n*120000->100644 blob    e47b4d58c4e5406bdba3ea1384c0c3efe007b8f6->e47b4d58c4e5406bdba3ea1384c0c3efe007b8f6      test/sys/bus/usb/devices/3-1\n*120000->100644 blob    f519185eb36af29f79ca89d4b3d51011756b6837->f519185eb36af29f79ca89d4b3d51011756b6837      test/sys/bus/usb/devices/3-1:1.0\n*120000->100644 blob    fb1919e7c9794ce31a257b50621f71f6f4f8bdef->fb1919e7c9794ce31a257b50621f71f6f4f8bdef      test/sys/bus/usb/devices/usb3\n*120000->100644 blob    2bc160c20cd950c52e34d4bab30e1e25d6f4df34->2bc160c20cd950c52e34d4bab30e1e25d6f4df34      test/sys/bus/usb/drivers/hub/3-0:1.0\n*120000->100644 blob    49d32d5abd7e26766f4c905f1d4edf1e28f8b322->49d32d5abd7e26766f4c905f1d4edf1e28f8b322      test/sys/bus/usb/drivers/pl2303/3-1:1.0\n*120000->100644 blob    03c76193e99a93c7ff45c9ac986d2bc8e0706b0b->03c76193e99a93c7ff45c9ac986d2bc8e0706b0b      test/sys/bus/usb/drivers/usb/3-1\n*120000->100644 blob    61dc52a61345178c8c171ecfe96df9646af2f16c->61dc52a61345178c8c171ecfe96df9646af2f16c      test/sys/bus/usb/drivers/usb/usb3\n*120000->100644 blob    b7733a68e08e564300212a22c9f81888c12bb55a->b7733a68e08e564300212a22c9f81888c12bb55a      test/sys/class/tty/ttyUSB0/device\n*120000->100644 blob    9ff2c81f529a95bd93ddaf66de6a72c74166c268->9ff2c81f529a95bd93ddaf66de6a72c74166c268      test/sys/devices/pci0000:00/0000:00:09.0/usb3/3-1/ttyUSB0/driver\n\nthanks,\n\ngreg k-h\n"},{"id":"2683","messageId":"1115398764.32065.27.camel@localhost.localdomain","threadId":"502","inReplyTo":"20050506163603.GA17766@kroah.com","subject":"Re: [PATCH] fix compare symlink against readlink not data","fromName":"Kay Sievers","fromEmail":"kay.sievers@vrfy.org","sentAt":"2005-05-06T16:59:24Z","receivedAt":"2005-05-06T16:59:24Z","isPatch":true,"sender":{"key":"kay.sievers@vrfy.org","avatar":null},"body":"On Fri, 2005-05-06 at 09:36 -0700, Greg KH wrote:\n> On Fri, May 06, 2005 at 06:23:34PM +0200, Kay Sievers wrote:\n> > On Fri, 2005-05-06 at 09:03 -0700, Greg KH wrote:\n> > > On Fri, May 06, 2005 at 03:45:01PM +0200, Kay Sievers wrote:\n> > > > Fix update-cache to compare the blob of a symlink against the link-target\n> > > > and not the file it points to. Also ignore all permissions applied to\n> > > > links.\n> > > > Thanks to Greg for recognizing this while he added our list of symlinks\n> > > > back to the udev repository.\n> > > \n> > > Hm, even with this patch applied (it's in Linus's tree right now), I\n> > > still get the following with a clean checked out udev tree:\n> > >  $ cg-diff\n> > >  Index: test/sys/block/cciss!c0d0/device\n> > >  ===================================================================\n> > \n> > I can't reproduce this. Are you sure, that the git-core binaries are\n> > called and not the cogito ones?\n> > \n> >   git-update-cache --refresh\n> >   git-diff-cache -r HEAD\n> > from the core-git should print nothing.\n> \n> Odd.  If I reclone the whole tree from the udev kernel.org tree, then it\n> works just fine.  If I create a new copy of my local tree, I still have\n> the same problem.  Diffing the trees shows no difference in the objects\n> at all...\n> \n> Can you add a symlink to a local tree and see if you can duplicate this?\n\nWorks as it should be.\nWhat happens when you throw away your old .git/index with?\n  git-read-tree HEAD\n\nKay\n\n"},{"id":"2685","messageId":"Pine.LNX.4.58.0505061009340.2233@ppc970.osdl.org","threadId":"502","inReplyTo":"20050506163603.GA17766@kroah.com","subject":"Re: [PATCH] fix compare symlink against readlink not data","fromName":"Linus Torvalds","fromEmail":"torvalds@osdl.org","sentAt":"2005-05-06T17:11:49Z","receivedAt":"2005-05-06T17:11:49Z","isPatch":true,"sender":{"key":"torvalds@linux-foundation.org","avatar":"https://avatars.githubusercontent.com/u/1024025?v=4"},"body":"\n\nOn Fri, 6 May 2005, Greg KH wrote:\n> \n> Odd.  If I reclone the whole tree from the udev kernel.org tree, then it\n> works just fine.  If I create a new copy of my local tree, I still have\n> the same problem.  Diffing the trees shows no difference in the objects\n> at all...\n\nYou've not updated your cache.\n\nGuys, remember this command:\n\n\tgit-diff-files\n\nJust like that, with no arguments. It shows you what is different in your \ncache. If you get a lot of output, it means that your index file isn't \nup-to-date.\n\nThe other magic command is\n\n\tgit-update-cache --refresh\n\nand you need to do that after you merge.\n\nIf you use cogito, and cogito doesn't refresh after pulls etc, that would\nbe a cogito bug. But if you do things like \"cp -a\" of a git tree, and \nyou forget to refresh the cache in the new tree, than that is _your_ bug..\n\n\t\tLinus\n"},{"id":"2686","messageId":"20050506171950.GA20132@kroah.com","threadId":"502","inReplyTo":"Pine.LNX.4.58.0505061009340.2233@ppc970.osdl.org","subject":"Re: [PATCH] fix compare symlink against readlink not data","fromName":"Greg KH","fromEmail":"greg@kroah.com","sentAt":"2005-05-06T17:19:51Z","receivedAt":"2005-05-06T17:19:51Z","isPatch":true,"sender":{"key":"greg@kroah.com","avatar":"https://gravatar.com/avatar/5bb5aa0cc2e01c00ec899d11130c07796bc186e465bae57bc34873b13b72c7c8?d=mp&s=160"},"body":"On Fri, May 06, 2005 at 10:11:49AM -0700, Linus Torvalds wrote:\n> \n> \n> On Fri, 6 May 2005, Greg KH wrote:\n> > \n> > Odd.  If I reclone the whole tree from the udev kernel.org tree, then it\n> > works just fine.  If I create a new copy of my local tree, I still have\n> > the same problem.  Diffing the trees shows no difference in the objects\n> > at all...\n> \n> You've not updated your cache.\n> \n> Guys, remember this command:\n> \n> \tgit-diff-files\n> \n> Just like that, with no arguments. It shows you what is different in your \n> cache. If you get a lot of output, it means that your index file isn't \n> up-to-date.\n> \n> The other magic command is\n> \n> \tgit-update-cache --refresh\n\nDamm, I still was using update-cache and checkout-cache from an old git\nversion.  That was my problem.\n\nSorry for the noise, it works just fine.\n\nthanks,\n\ngreg k-h\n"}]}