X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=GitRepo.vala;h=fd202f824ec9f40cf9573fbcea4c747c9a805de6;hb=bd802e5aa8113fe4a3551b8fef93316d6a40435a;hp=b444ce4a09622612ed18665ef889634217049c59;hpb=2d3bb6db4cf59fb23b8774360ee0f15ffb7dc975;p=gitlive diff --git a/GitRepo.vala b/GitRepo.vala index b444ce4a..fd202f82 100644 --- a/GitRepo.vala +++ b/GitRepo.vala @@ -19,6 +19,7 @@ public class GitRepo : Object public string git_working_dir; public bool debug = false; public bool has_local_changes = false; + public string host = ""; public string git_status; public string git_diff; public string ahead_or_behind = ""; @@ -131,9 +132,7 @@ public class GitRepo : Object } return list_cache; - - } public static GitRepo get(string path) @@ -173,19 +172,54 @@ public class GitRepo : Object if ( !cache.has_key(path) ) { cache.set( path, this); } + + var r = this.git({ "remote" , "get-url" , "--push" , "origin"}); + var uri = new Soup.URI(r); + this.host = uri.get_host(); + + this.loadBranches(); this.loadActiveTicket(); this.loadStatus(); } - public bool is_wip_branch() + public bool is_master_branch() { - return this.currentBranch.name.has_prefix("wip_"); + // special branches that do not allow autopushing now... + return this.currentBranch.name == "master" || this.currentBranch.name == "roojs"; } + public void init_config() + { + // managed = + if (this.get_config("managed") == "") { + this.set_config("managed", this.host == "git.roojs.com" ? "1" : "0"); + } + if (this.get_config("autocommit") == "") { + this.set_config("autocommit", this.host == "git.roojs.com" ? "1" : "0"); + } - public bool is_autocommit () + } + + + + public string get_config(string key) { + return this.git({ "config" , "gitlive." + key }); + } + public string set_config(string key, string value) { + return this.git({ "config" , "gitlive." + key, value }); + } + + public bool is_managed() { + return this.get_config("managed") == "1"; + + } + + + public bool is_autocommit () + { + return !FileUtils.test(this.gitdir + "/.gitlive-disable-autocommit" , FileTest.EXISTS); } public void set_autocommit(bool val) @@ -207,7 +241,16 @@ public class GitRepo : Object public bool is_auto_branch () { - return FileUtils.test(this.gitdir + "/.gitlive-enable-auto-branch" , FileTest.EXISTS); + if (this.name == "gitlog") { + return false; + } + // check remote... + if (this.is_managed()) { + return true; + } + return false; + + } public void set_auto_branch(bool val) @@ -219,12 +262,24 @@ public class GitRepo : Object if (cur == val) { return; // no change.. } - if (val) { - FileUtils.set_contents(this.gitdir + "/.gitlive-enable-auto-branch" , "x"); + if (this.host != "git.roojs.com") { // we can only push to this url. -- unless we have forced it to be managed. + // remote is not our server.. + if (val) { + FileUtils.set_contents(this.gitdir + "/.gitlive-managed" , "x"); + } else { + FileUtils.remove(this.gitdir + "/.gitlive-managed" ); + } + return; + + } + + if (val) { + FileUtils.remove(this.gitdir + "/.gitlive-unmanaged" ); } else { - // it exists... - FileUtils.remove(this.gitdir + "/.gitlive-enable-auto-branch" ); + FileUtils.set_contents(this.gitdir + "/.gitlive-unmanaged" , "x"); + } + } public bool is_autopush () @@ -266,6 +321,7 @@ public class GitRepo : Object public void loadBranches() { + GitBranch.loadBranches(this); } @@ -846,14 +902,18 @@ public class GitRepo : Object public static void updateAll(string after) { - update_all_after = after; - var tr = GitRepo.singleton().cache; - + update_all_after = after; + var tr = GitRepo.singleton().cache; - update_all_total = tr.size; - foreach(var repo in tr.values) { - repo.update_async(updateAllCallback); - } + + update_all_total = tr.size; + foreach(var repo in tr.values) { + if (!repo.is_managed()) { + update_all_total--; + continue; + } + repo.update_async(updateAllCallback); + } } public static void updateAllCallback(GitRepo repo, int err, string res)