Fix #5725 - disable create branch until ticket selected
[gitlive] / GitMonitor.vala
index d6fd736..1b11558 100644 (file)
@@ -1,5 +1,23 @@
+/**
 
+The monitor suffers from various issues - basically event flows while it's running...
 
+normall operations
+
+- monitors for file changes
+ -- adds to QUEUE when occurs.
+- queue runs in background.
+ - if it's got stuff in it..
+ - COMMIT (normally)
+ - now?? - if on master - try and branch
+   == do user selection, until we have branched
+   == then start monitoring again..
+   
+
+
+
+*/
 
 
 
@@ -36,13 +54,21 @@ public class GitMonitor : Monitor
                        if (this.queue.size < 1  || this.queueRunning) {
                                return true;
                        }
+                       var first = this.queue.get(0);
+                       var delay = true;
+                       
+                       // eg. on master.... and is_auto branch
+                       if (first.repo.is_master_branch() && first.repo.is_auto_branch()) {
+                               delay = false;
+                       }
+                       
                        
                        var last = -1 * this.lastAdd.difference(new DateTime.now(new TimeZone.local()));
  
                        // stdout.printf("LAST RUN: %s (expect %s) \n" ,
                        //         last.to_string(),   (5 * TimeSpan.SECOND).to_string() );
  
-                       if (last < 5 * TimeSpan.SECOND) { // wait 5 seconds before running. ????
+                       if (delay && last < 5 * TimeSpan.SECOND) { // wait 5 seconds before running. ????
                                return true;
                        }
                        //_this.lastAdd = new Date();
@@ -111,6 +137,12 @@ public class GitMonitor : Monitor
 
        }
        
+       public void restoreQueue( Gee.ArrayList<GitMonitorQueue> queue)
+       {
+               //used to restore teh queue after switch branches?/ - breaks our privte queue idea..
+               this.queue = queue;
+       }
+       
        /*
        public new void resume () {
                this.paused = false;
@@ -224,7 +256,21 @@ public class GitMonitor : Monitor
                if (this.paused || this.queue.size < 1 ) {
                        return;
                }
-               GLib.debug("GitMonitor.runQueue\n");
+               
+               foreach(var q in this.queue) {
+                       if (!q.shouldIgnore() && q.repo.is_master_branch() && q.repo.is_auto_branch()) {
+                               var oldq = this.queue;
+                               this.queue =  new Gee.ArrayList<GitMonitorQueue>(); 
+                               NewBranch.singleton().show(q.repo, oldq);
+                               
+                               return;
+                       }
+               
+               }
+               
+                
+               
+               GLib.debug("GitMonitor.runQueue size =%d\n", this.queue.size);
 
                this.queueRunning = true;
 
@@ -261,7 +307,7 @@ public class GitMonitor : Monitor
                        var gitpath = cmd.gitpath; 
                        
                        var repo = GitRepo.get( gitpath );
-                       if ( !repo.is_wip_branch()) {
+                       if ( repo.is_master_branch() && repo.is_auto_branch()) {
                                leave_queued.add(cmd);
                                continue;
                        }
@@ -557,11 +603,6 @@ public class GitMonitor : Monitor
                cmd.action = "commit";
                cmd.message = cmd.vname;
                this.queue.add(cmd);
-               
-               
-                if (!cmd.shouldIgnore() && !cmd.repo.is_wip_branch()) {
-                NewBranch.singleton().show(cmd.repo);
-         }
  
                 
        }
@@ -588,11 +629,6 @@ public class GitMonitor : Monitor
                cmd.commit_all = true;
 
                this.queue.add(cmd);
-               
-                if (!cmd.shouldIgnore() && !cmd.repo.is_wip_branch()) {
-                       NewBranch.singleton().show(cmd.repo);
-               }
-               
  
        }
        public override  void onCreated(MonitorNamePathDir src) {
@@ -649,10 +685,6 @@ public class GitMonitor : Monitor
                cmd.action = "commit";
                cmd.message = "Attribute changed " + cmd.vname;
                this.queue.add(cmd);
-               
-               if (!cmd.shouldIgnore() && !cmd.repo.is_wip_branch()) {
-                       NewBranch.singleton().show(cmd.repo);
-        }
        }
  
    public  override void onMoved(MonitorNamePathDir src,MonitorNamePathDir dest)  
@@ -685,12 +717,9 @@ public class GitMonitor : Monitor
                if (cmd_d.shouldIgnore()) {
                        
                        this.onDeleted(src);
-
                        return;
                }
-               
-               
+                
                GLib.debug("RM: %s", cmd_s.vname);
                cmd_s.action = "rm";
                this.queue.add(cmd_s);
@@ -709,17 +738,9 @@ public class GitMonitor : Monitor
                        cmd.message = cmd_d.vname;
                }
                
-               
                this.queue.add(cmd);
 
-               if (!cmd.shouldIgnore() && !cmd.repo.is_wip_branch()) {
-                       NewBranch.singleton().show(cmd.repo);
-        }
-        // this is where it get's complicated...
-        // as we might be moving across repo's...
-        
-        
-        
+
                 
        }