merge from master
authorAlan Knowles <alan@roojs.com>
Mon, 5 Nov 2018 07:24:24 +0000 (15:24 +0800)
committerAlan Knowles <alan@roojs.com>
Mon, 5 Nov 2018 07:24:24 +0000 (15:24 +0800)
1  2 
GitMonitor.vala
GitMonitorQueue.vala
GitRepo.vala
MergeBranch.bjs
NewBranch.bjs
NewBranch.vala
RooTicket.vala

diff --cc GitMonitor.vala
@@@ -553,13 -594,10 +594,8 @@@ public class GitMonitor : Monito
                cmd = new GitMonitorQueue(src);
                cmd.action = "commit";
                cmd.message = cmd.vname;
--              this.queue.add(cmd);
--              
--              
-                if (!cmd.shouldIgnore() && !cmd.repo.is_wip_branch()) {
-                 NewBranch.singleton().show(cmd.repo);
-          }
 -                
++              this.queue.append_val(cmd);
 + 
                 
        }
        public override  void onDeleted(MonitorNamePathDir src) 
                cmd.message = cmd.vname;
                cmd.commit_all = true;
  
--              this.queue.add(cmd);
--              
-                if (!cmd.shouldIgnore() && !cmd.repo.is_wip_branch()) {
-                       NewBranch.singleton().show(cmd.repo);
-               }
 -               
--              
++              this.queue.append_val(cmd);
   
        }
        public override  void onCreated(MonitorNamePathDir src) {
                cmd = new GitMonitorQueue(src);
                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);
-         }
 -       
++              this.queue.append_val(cmd);
        }
   
     public  override void onMoved(MonitorNamePathDir src,MonitorNamePathDir dest)  
                        cmd.message = cmd_d.vname;
                }
                
--              
--              this.queue.add(cmd);
 - 
 -        // this is where it get's complicated...
 -        // as we might be moving across repo's...
 -        
 -        
 -        
++              this.queue.append_val(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...
-         
-         
-         
                 
        }
           
@@@ -119,8 -119,8 +119,8 @@@ public class GitMonitorQueue : MonitorN
                }
                public static string messageToString(Gee.ArrayList<GitMonitorQueue> messages ) {
                        string[] ret = {};
--                      for(var i =0; i < messages.size; i++) {
-                               ret += messages.get(i).message;
 -                              ret+= messages.get(i).message;
++                      for(var i =0; i < messages.length; i++) {
++                              ret+= messages.index(i).message;
                        }
                        return string.joinv("\n",ret);
                }
diff --cc GitRepo.vala
@@@ -227,168 -225,177 +225,112 @@@ public class GitRepo : Objec
                return ret;
        
      }
-     //RooTicket? ticket = null;
-     
 -     public static void doMerges(string action, string ticket_id, string commit_message)
 -    {
 -       GitMonitor.gitmonitor.stop();
 -       
 -       var commitrevs = "";
 -       var sucess = true;
 -       foreach(var  repo in GitRepo.singleton().cache.values) {
 -               if (repo.activeTicket != null && repo.activeTicket.id == ticket_id) {
 -                       var res = repo.doMerge(action,ticket_id, commit_message);
 -                       if (!res) {
 -                               sucess = false;
 -                               continue;
 -                       }
 -                       commitrevs += commitrevs.length > 0 ? " " : "";
 -                       commitrevs += repo.currentBranch.lastrev;
 -               }
 -       }
 -       if (sucess && action == "CLOSE") {
 -               RooTicket.singleton().getById(ticket_id).close(commitrevs);
 -       }
 -       GitMonitor.gitmonitor.start();
 -    }
++    RooTicket? ticket = null;
      
-     public static void doMerges(string action, string ticket_id, string commit_message)
 -
 -
 -
 -    public bool doMerge(string action, string ticket_id, string commit_message)
++    public void setActiveTicket(RooTicket ticket, string branchname)
      {
-       GitMonitor.gitmonitor.stop();
-       
-       var commitrevs = "";
-       var sucess = true;
-       foreach(var  repo in GitRepo.singleton().cache.values) {
-               if (repo.activeTicket != null && repo.activeTicket.id == ticket_id) {
-                       var res = repo.doMerge(action,ticket_id, commit_message);
-                       if (!res) {
-                               sucess = false;
-                               continue;
-                       }
-                       commitrevs += commitrevs.length > 0 ? " " : "";
-                       commitrevs += repo.currentBranch.lastrev;
-               }
-       }
-       if (sucess && action == "CLOSE") {
-               RooTicket.singleton().getById(ticket_id).close(commitrevs);
-       }
-       GitMonitor.gitmonitor.start();
-     }
-     
-     
-     public bool doMerge(string action, string ticket_id, string commit_message)
-     {
-       // in theory we should check to see if other repo's have got the same branch and merge all them at the same time.
-       // also need to decide which branch we will merge into?
-       var ret = "";
-       if (action == "CLOSE" || action == "LEAVE") {
-                       
+        // in theory we should check to see if other repo's have got the same branch and merge all them at the same time.
+        // also need to decide which branch we will merge into?
+                  var ret = "";
+                  if (action == "CLOSE" || action == "LEAVE") {
+                                  
   
-                       try {
-                               var oldbranch = this.currentBranch.name;
-                               this.setActiveTicket(null, "master");
-                       string [] cmd = { "merge",   "--squash",  oldbranch };
-                       this.git( cmd );
-                        cmd = { "commit",   "--m",  commit_message };
-                       this.git( cmd );
-                       this.loadBranches(); // updates lastrev..
-                       
-                       var notification = new Notify.Notification(
-                                       "Merged branch %s to master".printf(oldbranch),
-                                       "",
-                                        "dialog-information"
-                                       
-                               );
-       
-                               notification.set_timeout(5);
-                               notification.show();   
-                       
-                       // close ticket..
-                       return true; 
-                       
-                   } catch (Error e) {
+                try {
+                        var oldbranch = this.currentBranch.name;
+                        this.setActiveTicket(null, "master");
+                string [] cmd = { "merge",   "--squash",  oldbranch };
+                this.git( cmd );
+                 cmd = { "commit",   "--m",  commit_message };
+                this.git( cmd );
+                this.loadBranches(); // updates lastrev..
+                
+                var notification = new Notify.Notification(
+                                "Merged branch %s to master".printf(oldbranch),
+                                "",
+                                 "dialog-information"
+                                
+                        );
  
-                       GitMonitor.gitmonitor.pauseError(e.message);
-                       return false;
-                   }
-                   // error~?? -- show the error dialog...
-                   return false;
-       }
-       if (action == "MASTER") {
-               // merge master into ours..
-                       try {
-                       string[] cmd = { "merge",  "master" };
-                       this.git( cmd );
-                       var notification = new Notify.Notification(
-                                       "Merged code from master to %s".printf(this.currentBranch.name),
-                                       "",
-                                        "dialog-information"
-                                       
-                               );
-                               notification.set_timeout(5);
-                               notification.show();   
-                       
-                       return true;
-                       } catch (Error e) {
-                       GitMonitor.gitmonitor.pauseError(e.message);
-                       return false;
-                   }
-           }
-       if (action == "EXIT") {
-                       try {
-                       var oldbranch  = this.currentBranch.name;
-                               this.setActiveTicket(null, "master");
-                       this.loadBranches();
-                       var notification = new Notify.Notification(
-                                       "Left branch %s".printf(oldbranch),
-                                       "",
-                                        "dialog-information"
-                                       
-                               );
-                               notification.set_timeout(5);
-                               notification.show();   
-                       
-                       return true;
-                   } catch (Error e) {
-                       GitMonitor.gitmonitor.pauseError(e.message);
+                        notification.set_timeout(5);
+                        notification.show();   
+                
+                // close ticket..
+                return true; 
+                
+            } catch (Error e) {
  
-                       return false;                   
-                   }
-                   // error~?? -- show the error dialog...
+                GitMonitor.gitmonitor.pauseError(e.message);
+                return false;
+            }
+            // error~?? -- show the error dialog...
+                    return false;
+        }
+        if (action == "MASTER") {
+                // merge master into ours..
+                        try {
+                        string[] cmd = { "merge",  "master" };
+                        this.git( cmd );
+                        var notification = new Notify.Notification(
+                                        "Merged code from master to %s".printf(this.currentBranch.name),
+                                        "",
+                                         "dialog-information"
+                                        
+                                );
+                                notification.set_timeout(5);
+                                notification.show();   
+                       
+                        return true;
+                        } catch (Error e) {
+                        GitMonitor.gitmonitor.pauseError(e.message);
+                        return false;
+                    }
+            }
+        if (action == "EXIT") {
+                        try {
+                        var oldbranch  = this.currentBranch.name;
+                          this.setActiveTicket(null, "master");
+                        this.loadBranches();
+                        var notification = new Notify.Notification(
+                                        "Left branch %s".printf(oldbranch),
+                                        "",
+                                         "dialog-information"
+                                        
+                                );
+                                notification.set_timeout(5);
+                                notification.show();   
+                        
+                        return true;
+                    } catch (Error e) {
+                        GitMonitor.gitmonitor.pauseError(e.message);
  
-       }
-       return false;
+                        return false;                   
+                    }
+                    // error~?? -- show the error dialog...
+        }
+        return false;
      }
      
      
-     
-     
-     public void setActiveTicket(RooTicket? ticket, string branchname)
+     public bool setActiveTicket(RooTicket ticket, string branchname)
      {
-       this.createBranchNamed(branchname);
-       if (ticket != null) {
-               FileUtils.set_contents(this.gitdir + "/.gitlive-active-ticket" , ticket.id);
-       } else {
-               if (FileUtils.test(this.gitdir + "/.gitlive-active-ticket",FileTest.EXISTS)) {
-                       FileUtils.remove(this.gitdir + "/.gitlive-active-ticket");
-                       }
+       if (!this.createBranchNamed(branchname)) {
+               return false;
                }
-       
+       FileUtils.set_contents(this.gitdir + "/.gitlive-active-ticket" , ticket.id);
        this.activeTicket = ticket;
+       return true;
      }
      
-     
-     
-     public void loadTicket()
+     public bool createBranchNamed(string branchname)
      {
-       if (this.activeTicket != null) { // assumes merge will clear this...
-               return;
-       }
-       if (!FileUtils.test(this.gitdir + "/.gitlive-active-ticket",FileTest.EXISTS)) {
-               return;
-               }
-               string ticket_id;
-               FileUtils.get_contents(this.gitdir + "/.gitlive-active-ticket" , out  ticket_id);
-               this.activeTicket = RooTicket.singleton().getById(ticket_id);
-     }
-     
-     
-     
-     
-     
-     public void createBranchNamed(string branchname)
-     {
-               if (this.branches.has_key(branchname)) {
-                        string[] cmd = { "checkout", branchname  };
-                        this.git(cmd);         
-               } else {
-                        string[] cmd = { "checkout", "-b" , branchname  };
-                        this.git(cmd);
-                }
 -              
 -              try {
 -                   if (this.branches.has_key(branchname)) {
 -                      // this is where it get's tricky...
 -                      
 -                      string[] cmd = { "ls-files" ,  "-m" };                   // list the modified files..
 -                  var ret = this.git(cmd);
 -                  var stash = ret.length> 1 ;
 -                  
 -                      
 -                  cmd = { "stash" };                  
 -                  if (stash) { this.git(cmd); }
 -                  
 -                  cmd = { "checkout", branchname  };
 -                  this.git(cmd);
 -                  
 -                  cmd = { "merge", "master"  };
 -                  this.git(cmd);
 -                  
 -                  cmd = { "stash", "pop"  };
 -                  if (stash) { this.git(cmd); }
 -                  
 -                  
 -                  } else {
 -                          string[] cmd = { "checkout", "-b" , branchname  };
 -                          this.git(cmd);
 -                  }
 -                     var notification = new Notify.Notification(
 -                       "Changed to branch %s".printf(branchname),
 -                       "",
 -                        "dialog-information"
 -                       
 -               );
 -
 -               notification.set_timeout(5);
 -               notification.show();   
 -       
 -                  
 -          } catch(Error e) {
 -              GitMonitor.gitmonitor.pauseError(e.message);
 -       return false;          
 -          
 -          }
++       string[] cmd = { "checkout", "-b" , branchname  };
++       this.git(cmd);
         this.loadBranches(); // update branch list...
         GitMonitor.gitmonitor.runQueue(); // commit any outstanding...
+        return true;
      }
      
-      
-     
      
      /**
       * add:
diff --cc MergeBranch.bjs
     ]
    }
   ]
--}
++}
diff --cc NewBranch.bjs
@@@ -9,8 -9,8 +9,8 @@@
   "items" : [
    {
     "listeners" : {
 -    "delete_event" : "(self, event) => {\n    this.el.hide();\n    this.running = false;\n    return true; \n    //test  \n}\n ",
 -    "response" : " (self, response_id) =>  { \n  \n\tGLib.debug(\"got %d\", (int) response_id);\n\tif (response_id == 0) {\n\t    _this.el.hide();\t\n\t    this.running = false; \n\t\tGitMonitor.gitmonitor.start();\t    \n\t \treturn;\n\t}\n\t \n\t// have they selected a ticket..\n\t// make that the current active ticket?\n\t// we really need to store locally what ticket is being worked on..\n\t// in theory we could be working on multiple project and not merging..\n\t// -- each repo would have their active ticket (only one per repo)\n\t// -- so we could just store that in there\n\t// -- initial load can check the contents of the ticket files on first scan.\n\tvar ticket_id = _this.ticketsel.selectedTicketId();\n\t\n\tvar success = true;\n    if (this.repo != null) {\n    \tvar bn = _this.name.el.get_text();\n    \tif (ticket_id != \"\" ) {\n\t\t\tsuccess = this.repo.setActiveTicket( RooTicket.singleton().getById(ticket_id), bn);\n\t\t} else {\n\t\t\tsuccess = this.repo.createBranchNamed(bn);\n\t\t}\n    }\n    if (success) {\n\t\tGitMonitor.gitmonitor.restoreQueue( this.queue );\n\t\tGitMonitor.gitmonitor.runQueue();    \n\t\tGitMonitor.gitmonitor.start();\n\t}\n    this.running = false; \t \n\t_this.el.hide();\n\t \n\t  \n}",
 +    "delete_event" : "(self, event) => {\n    this.el.hide();\n    return true; \n    //test  \n}\n ",
-     "response" : " (self, response_id) =>  { \n  \n\tGLib.debug(\"got %d\", (int) response_id);\n\tif (response_id == 0) {\n\t    _this.el.hide();\t\n\t    this.running = false; \n\t \treturn;\n\t}\n\t \n\t// have they selected a ticket..\n\t// make that the current active ticket?\n\t// we really need to store locally what ticket is being worked on..\n\t// in theory we could be working on multiple project and not merging..\n\t// -- each repo would have their active ticket (only one per repo)\n\t// -- so we could just store that in there\n\t// -- initial load can check the contents of the ticket files on first scan.\n\tvar ticket_id = _this.ticketsel.selectedTicketId();\n\t\n    if (this.repo != null) {\n    \tvar bn = _this.name.el.get_text();\n    \tif (ticket_id != \"\" ) {\n\t\t\tthis.repo.setActiveTicket( RooTicket.singleton().getById(ticket_id), bn);\n\t\t} else {\n\t\t\tthis.repo.createBranchNamed(bn);\n\t\t}\n    }\n\n\tthis.running = false; \n\n\t \n\t_this.el.hide();\t\n \n\n\t \n}",
++    "response" : " (self, response_id) =>  { \n  \n\tGLib.debug(\"got %d\", (int) response_id);\n\tif (response_id == 0) {\n\t    _this.el.hide();\t\n\t    this.running = false; \n\t \treturn;\n\t}\n\t \n\t// have they selected a ticket..\n\t// make that the current active ticket?\n\t// we really need to store locally what ticket is being worked on..\n\t// in theory we could be working on multiple project and not merging..\n\t// -- each repo would have their active ticket (only one per repo)\n\t// -- so we could just store that in there\n\t// -- initial load can check the contents of the ticket files on first scan.\n\tvar ticket_id = _this.ticketsel.selectedTicketId();\n\t\n    if (this.repo != null) {\n    \tvar bn = _this.name.el.get_text();\n    \tif (ticket_id != \"\" ) {\n\t\t\tthis.repo.setActiveTicket( RooTicket.singleton().getById(ticket_id), bn);\n\t\t} else {\n\t\t\tthis.repo.createBranchNamed(bn);\n\t\t}\n    }\n\n\t\t    this.running = false; \n\n\t \n\t \n\t \n\n\t \n}",
      "show" : "(self)  => {\n \n\n  //test\n}"
     },
     "default_width" : 500,
     ]
    }
   ]
--}
++}
diff --cc NewBranch.vala
@@@ -74,19 -79,20 +79,19 @@@ public class NewBranch : Objec
              if (this.repo != null) {
                var bn = _this.name.el.get_text();
                if (ticket_id != "" ) {
-                               this.repo.setActiveTicket( RooTicket.singleton().getById(ticket_id), bn);
+                               success = this.repo.setActiveTicket( RooTicket.singleton().getById(ticket_id), bn);
                        } else {
-                               this.repo.createBranchNamed(bn);
+                               success = this.repo.createBranchNamed(bn);
                        }
              }
 -            if (success) {
 -                      GitMonitor.gitmonitor.restoreQueue( this.queue );
 -                      GitMonitor.gitmonitor.runQueue();    
 -                      GitMonitor.gitmonitor.start();
 -              }
 -            this.running = false;      
 -              _this.el.hide();
 +        
-               this.running = false; 
++                          this.running = false; 
 +        
 +               
-               _this.el.hide();        
-          
++               
++               
 +        
                 
 -                
          });
          this.el.show.connect( (self)  => {
           
diff --cc RooTicket.vala
@@@ -246,5 -253,4 +253,4 @@@ public class RooTicket : Objec
  
        
        
-       
-- }
++ }