+
+
+public class GitMonitorQueue : MonitorNamePathDir {
+ // name = basename
+ // path = full path..
+ // dir = dir path
+
+ public string gitpath;
+ public string vdir; // relative path (within git)
+ public string vname; // relative filename (within git)
+ public string message ; // for commit
+ public bool commit_all;
+ public GitRepo repo;
+
+ public GitMonitorQueue(MonitorNamePathDir f) {
+
+ base(f.name, f.path, f.dir);
+
+ this.message = "";
+ this.commit_all = false;
+
+ var vpath_ar = this.dir.substring(GitMonitor.gitlive.length +1).split("/", 0);
+
+ if (vpath_ar.length < 1 || vpath_ar[0].length < 1) {
+
+ this.gitpath = "";
+ this.vdir = "";
+ this.vname = "";
+ return;
+ }
+
+
+ this.gitpath = GitMonitor.gitlive + "/" + vpath_ar[0];
+
+ string[] vpath = {};
+ for (var i = 1; i< vpath_ar.length; i++) {
+ vpath += vpath_ar[i];
+ }
+
+ this.vdir = string.joinv("/", vpath);
+
+ this.vname = this.vdir + (this.vdir.length > 0 ? "/" : "") + this.name;
+
+ this.repo = GitRepo.get(this.gitpath);
+
+ // trigger the suggestion to start a new branch
+
+ }
+
+
+ public bool shouldIgnore()
+ {
+
+ // vim.. what a seriously brain dead program..
+ if (this.name == "4913") {
+ GLib.debug("ignore name = 4913");
+ return true;
+ }
+
+
+ if (this.name[0] == '.') {
+ // except!
+ if (this.name == ".htaccess") {
+
+ return false;
+ }
+ if (this.name == ".gitignore") {
+ return false;
+ }
+ GLib.debug("ignore name starts with dot %s", this.name);
+ return true;
+ }
+
+
+ if (this.name[this.name.length -1] == '~') {
+ GLib.debug("ignore name ends with ~");
+ return true;
+ }
+ // netbeans / android studio.. silly temp files..
+
+ if (Regex.match_simple("___jb_old___$", this.name)) {
+ GLib.debug("ignore name includes jb_old");
+ return true;
+ }
+ if (Regex.match_simple("___jb_bak___$", this.name)) {
+ GLib.debug("ignore name includes jb_bkc");
+ return true;
+ }
+ //if (f.name.match(/^nbproject/)) {
+ // return true;
+ //}
+ // ignore anything in top level!!!!
+ if (this.gitpath.length < 1) {
+ GLib.debug("ignore gitpath length is empty");
+ return true;
+ }
+
+ return false;
+ }
+
+ /** -- statics --*/
+
+ public static int indexOfAdd( Gee.ArrayList<GitMonitorQueue> add_files, string add)
+ {
+ for(var i =0; i < add_files.size; i++) {
+ if (add_files.get(i).vname == add) {
+ return i;
+ }
+ }
+ return -1;
+ }
+ public static int indexOfMessage(Gee.ArrayList<GitMonitorQueue> messages, string message) {
+ for(var i =0; i < messages.size; i++) {
+ if (messages.get(i).message == message) {
+ return i;
+ }
+ }
+ return -1;
+ }
+ public static string messageToString(Gee.ArrayList<GitMonitorQueue> messages ) {
+ string[] ret = {};
+ for(var i =0; i < messages.size; i++) {
+ ret+= messages.get(i).message;
+ }
+ return string.joinv("\n",ret);
+ }
+ public static string queueArrayToString(Gee.ArrayList<GitMonitorQueue> list) {
+ var ret = "";
+ for(var i =0; i < list.size; i++) {
+
+ ret += (ret.length > 0 ? ", " : "") + list.get(i).vname;
+ }
+ return ret;
+
+ }
+
+ public static bool queueHas(Gee.ArrayList<GitMonitorQueue> list , GitMonitorQueue cmd_s, string action) {
+ for(var i =0; i < list.size; i++) {
+ var test = list.get(i);
+ if (list.get(i).gitpath != cmd_s.gitpath) {
+ continue;
+ }
+ if (list.get(i).vname != cmd_s.vname) {
+ continue;
+ }
+ if (list.get(i).action != action) {
+ continue;
+ }
+ return true;
+ }
+ return false;
+ }
+ public string fullpath()
+ {
+ return this.gitpath + "/" + this.vname;
+ }
+
+
+
+}
+