public bool has_local_changes = false;
public string git_status;
public string git_diff;
+ public string ahead_or_behind = "";
public Gee.HashMap<string,bool> ignore_files;
public GitBranch currentBranch;
}
return list_cache;
-
-
}
public static GitRepo get(string path)
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 bool is_autocommit ()
+ public bool is_managed()
{
+ // is it a roojs origin?
+ var r = this.git({ "remote" , "get-url" , "--push" , "origin"});
+ var uri = new Soup.URI(r);
+ if (uri.get_host() != "git.roojs.com") { // we can only push to this url. -- unless we have forced it to be managed.
+ return FileUtils.test(this.gitdir + "/.gitlive-managed" , FileTest.EXISTS);
+ }
+ // otherwise see if unmanaged is set to disable it..
+ return !FileUtils.test(this.gitdir + "/.gitlive-unmanaged" , FileTest.EXISTS);
+
+ }
+
+
+ public bool is_autocommit ()
+ {
return !FileUtils.test(this.gitdir + "/.gitlive-disable-autocommit" , FileTest.EXISTS);
}
public void set_autocommit(bool val)
public bool is_auto_branch ()
{
+ if (this.name == "gitlog") {
+ return false;
+ }
+ // check remote...
+
return FileUtils.test(this.gitdir + "/.gitlive-enable-auto-branch" , FileTest.EXISTS);
}
var r = this.git({ "status" , "--porcelain" });
this.git_status = r;
this.has_local_changes = r.length > 0;
+
+ var rs = this.git({ "status" , "-sb" });
+
+ this.ahead_or_behind = rs.contains("[ahead") ? "A" : (rs.contains("[behind") ? "B" : "");
+
+
this.git_diff = this.git({ "diff" , "HEAD", "--no-color" });
}
public void loadBranches()
{
+
GitBranch.loadBranches(this);
}
//if (File.exists(this.repo + '/.git/config')) {
//env.push("GITPATH=" + this.repo );
//}
-
-
+
var cfg = new SpawnConfig(this.git_working_dir , args , env);
//cfg.debug = true;
// may throw error...
var sp = new Spawn(cfg);
-
- GLib.debug( "GOT: %s" , sp.output);
+ // diff output is a bit big..
+ if (args_in[0] != "diff") {
+ GLib.debug( "GOT: %s" , sp.output);
+ }
// parse output for some commands ?
return sp.output;
}
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)