Subject: [PATCH] update-cache.c ignore directories

From: "atani" <[email-masked]>
Date: Fri, 22 Apr 2005 15:25:07 -0700

--- sorry if this dupes, mail client issues... 
 
In my tests of using git (both Linus and pasky versions) I had a 
problem with  
doing "gitadd.sh *" where * expands to include directories.  This 
simple  
patch allows update-cache.c to more gracefully handle a directory 
being  
passed into the add_file_to_cache method.  Without this patch 
update-cache  
exits prematurely with an error similar to: 
------------- 
fatal: Unable to add plx to database 
------------- 
 
Now it spits out: 
------------- 
'plx' is a directory, ignoring 
------------- 
 
Which from an end user stand point is better. 
 
BTW, so far my tests of using git are positive for my small Dreamcast 
software  
projects...  I was previously using subversion but find it to be a bit 
of  
overkill for these small projects. 
 
Martin Schlemmer,  I ran "emerge sync" today and found git has been 
added to  
portage, version 0.5.  Also note that there are now two "git" entries 
within  
portage app-misc/git and dev-util/git.  app-misc/git is GNU 
Interactive Tools 
 
Mike 
 
Signed-off-by: Mike Dunston ([email-masked]) 
 
Index: update-cache.c 
=================================================================== 
--- 690494557d393ca78f69a8569880ed4a3aeda276/update-cache.c  
(mode:100644  
sha1:4353b80890ba2afbe22248a4dc25060aa4a429b2) 
+++ uncommitted/update-cache.c  (mode:100644) 
@@ -104,6 +104,11 @@ 
                close(fd); 
                return -1; 
        } 
+       if(S_ISDIR(st.st_mode)) { 
+               printf("'%s' is a directory, ignoring\n", path); 
+               close(fd); 
+               return 0; 
+       } 
        namelen = strlen(path); 
        size = cache_entry_size(namelen); 
        ce = malloc(size);