GitRepo.vala
[gitlive] / GitRepo.vala
index 448345c..2644b68 100644 (file)
@@ -16,6 +16,8 @@ public class GitRepo : Object
     public string gitdir;
     public string git_working_dir;
     public bool debug = false;
+    
+    public Gee.HashMap<string,bool> ignore_files;
 
     /**
     * index of.. matching gitpath..
@@ -124,7 +126,7 @@ public class GitRepo : Object
     public GitRepo(string path) {
         // cal parent?
         this.name =   File.new_for_path(path).get_basename();
-        
+        this.ignore_files = new Gee.HashMap<string,bool>();
         
         this.git_working_dir = path;
         this.gitdir = path + "/.git";
@@ -162,16 +164,22 @@ public class GitRepo : Object
         
     public bool is_ignore(string fname) throws Error, SpawnError
     {
+               if (this.ignore_files.has_key(fname)) {
+                       return this.ignore_files.get(fname);
+               }
+               
                try {
                        var ret = this.git( { "check-ignore" , fname } );
+                       this.ignore_files.set(fname, ret == fname);
                        return ret == fname;
                } catch (SpawnError e) {
+                       this.ignore_files.set(fname, false);
                        return false;
                }
-               
-
+                
     } 
     
+    
       /**
      * remove:
      * remove files to track.