X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=GitRepo.vala;h=6954437cd13cc3971096b4128846e211125717ef;hb=3c06d975ce5266b5aae86fa6e8cec2cc7d3aa51b;hp=19705161792301e95e1642ff204fd2d677196dc7;hpb=4e4054a92503cb722887c4e9336e022cb865d468;p=gitlive diff --git a/GitRepo.vala b/GitRepo.vala index 19705161..6954437c 100644 --- a/GitRepo.vala +++ b/GitRepo.vala @@ -29,6 +29,7 @@ public class GitRepo : Object public Gee.HashMap branches; // accessed in GitBranch.. public RooTicket? activeTicket; public Gee.HashMap cache; + public Gee.HashMap config_cache; @@ -155,7 +156,8 @@ public class GitRepo : Object * */ - private GitRepo(string path) { + private GitRepo(string path) + { // cal parent? this.name = File.new_for_path(path).get_basename(); this.ignore_files = new Gee.HashMap(); @@ -191,6 +193,7 @@ public class GitRepo : Object } public void init_config() { + this.config_cache = new Gee.HashMap(); // managed = if (this.get_config("managed") == "") { this.set_config("managed", this.host == "git.roojs.com" ? "1" : "0"); @@ -201,15 +204,32 @@ public class GitRepo : Object if (this.get_config("autopush") == "") { this.set_config("autopush", this.host == "git.roojs.com" ? "1" : "0"); } + } public string get_config(string key) { - return this.git({ "config" , "gitlive." + key }); + + if (this.config_cache.has_key(key)) { + //GLib.debug("get_config %s = '%s'", key, this.config_cache.get(key)); + return this.config_cache.get(key); + } + try { + var ret = this.git({ "config" , "gitlive." + key }).strip(); + this.config_cache.set(key, ret); + //GLib.debug("get_config %s = '%s'", key, ret); + return ret; + } catch (Error e) { + this.config_cache.set(key, ""); + //GLib.debug("get_config (fail) %s = '%s'", key, ""); + return ""; // happens when there is nothing set... + } + } - public string set_config(string key, string value) { - return this.git({ "config" , "gitlive." + key, value }); + public void set_config(string key, string value) { + this.git({ "config" , "gitlive." + key, value }); + this.config_cache.set(key,value); } public bool is_managed() @@ -424,14 +444,11 @@ public class GitRepo : Object public bool setActiveTicket(RooTicket? ticket, string branchname) { + this.set_config("ticket", ""); if (!this.createBranchNamed(branchname)) { return false; } - if (ticket != null) { - FileUtils.set_contents(this.gitdir + "/.gitlive-active-ticket" , ticket.id); - } else { - FileUtils.remove(this.gitdir + "/.gitlive-active-ticket" ); - } + this.set_config("ticket", ticket == null ? "": ticket.id); this.activeTicket = ticket; return true; } @@ -775,6 +792,8 @@ public class GitRepo : Object // may throw error... var sp = new Spawn(cfg); + //GLib.debug( "GOT result: %d" , sp.result); + // diff output is a bit big.. if (args_in[0] != "diff") { GLib.debug( "GOT: %s" , sp.output); @@ -868,7 +887,7 @@ public class GitRepo : Object } repo.update_async(updateAllCallback); } - + GLib.debug("calls total = %d", (int) update_all_total); } public static void updateAllCallback(GitRepo repo, int err, string res) { @@ -876,14 +895,19 @@ public class GitRepo : Object repo.loadStatus(); update_all_total--; + GLib.debug("calls remaining = %d", (int)update_all_total); if (update_all_total > 0 ) { + return; } + GLib.debug("call after load = %s", update_all_after); + switch (update_all_after) { case "show_clones": Clones.singleton().show(); break; default: + GLib.debug("Unkown call after load = %s", update_all_after); break; } return;