this.git_status = r;
this.has_local_changes = r.length > 0;
- var rs = this.git({ "status" , "-sb" });
-
+ //var rs = this.git({ "status" , "-sb" });
+ var cb = this.getCurrentBranch();
- this.ahead_or_behind = rs.contains("[ahead") ? "A" : (rs.contains("[behind") ? "B" : "");
+ this.ahead_or_behind = cb.ahead > 0 ? "A" : (cb.behind > 0 ? "B" : "");
- this.git_diff = this.git({ "diff" , "HEAD", "--no-color" });
+ this.git_diff = this.diffWorking();
}
GitMonitor.gitmonitor.pauseError(ee.message);
return "Error getting diff";
}
-
-
+
}
+ public string diffWorking()
+ {
+ var cb = this.getCurrentBranch();
+ GLib.debug("Calling diff working");
+ var diff = new Ggit.Diff.tree_to_workdir(this.repo, cb.getTree(), new Ggit.DiffOptions());
+ var ret = "";
+ diff.print(Ggit.DiffFormatType.PATCH, (delta, hunk, line) => {
+ switch(line.get_origin()) {
+ case Ggit.DiffLineType.ADDITION: ret+="+"; break;
+ case Ggit.DiffLineType.DELETION: ret+="-";break;
+ case Ggit.DiffLineType.CONTEXT: ret+=" ";break;
+ case Ggit.DiffLineType.HUNK_HDR: break;
+ case Ggit.DiffLineType.FILE_HDR: break;
+ default: ret+=" ";break;
+ }
+ ret += " " + line.get_text() ;
+ return 0;
+ });
+ //GLib.debug("returning %s", ret);
+ return ret;
+ }
+
/**
* add: