]> git.armaanb.net Git - stagit.git/blobdiff - stagit.c
bump version to 0.9.1
[stagit.git] / stagit.c
index 8a7e7fc4d5c02bc6ba6bacb8e981058f8833b789..b8abea32fa447225f26b9ef793e0ae7c4723b771 100644 (file)
--- a/stagit.c
+++ b/stagit.c
@@ -122,7 +122,9 @@ commitinfo_getstats(struct commitinfo *ci)
 
        if (git_diff_find_init_options(&fopts, GIT_DIFF_FIND_OPTIONS_VERSION))
                goto err;
-       fopts.flags |= GIT_DIFF_FIND_RENAMES | GIT_DIFF_FIND_COPIES;
+       /* find renames and copies, exact matches (no heuristic) for renames. */
+       fopts.flags |= GIT_DIFF_FIND_RENAMES | GIT_DIFF_FIND_COPIES |
+                      GIT_DIFF_FIND_EXACT_MATCH_ONLY;
        if (git_diff_find_similar(ci->diff, &fopts))
                goto err;
 
@@ -459,6 +461,7 @@ printshowfile(FILE *fp, struct commitinfo *ci)
        git_patch *patch;
        size_t nhunks, nhunklines, changed, add, del, total, i, j, k;
        char linestr[80];
+       int c;
 
        printcommit(fp, ci);
 
@@ -478,7 +481,21 @@ printshowfile(FILE *fp, struct commitinfo *ci)
        for (i = 0; i < ci->ndeltas; i++) {
                delta = git_patch_get_delta(ci->deltas[i]->patch);
 
-               fprintf(fp, "<tr><td><a href=\"#h%zu\">", i);
+               switch (delta->status) {
+               case GIT_DELTA_ADDED:      c = 'A'; break;
+               case GIT_DELTA_COPIED:     c = 'C'; break;
+               case GIT_DELTA_DELETED:    c = 'D'; break;
+               case GIT_DELTA_MODIFIED:   c = 'M'; break;
+               case GIT_DELTA_RENAMED:    c = 'R'; break;
+               case GIT_DELTA_TYPECHANGE: c = 'T'; break;
+               default:                   c = ' '; break;
+               }
+               if (c == ' ')
+                       fprintf(fp, "<tr><td>%c", c);
+               else
+                       fprintf(fp, "<tr><td class=\"%c\">%c", c, c);
+
+               fprintf(fp, "</td><td><a href=\"#h%zu\">", i);
                xmlencode(fp, delta->old_file.path, strlen(delta->old_file.path));
                if (strcmp(delta->old_file.path, delta->new_file.path)) {
                        fputs(" -&gt; ", fp);
@@ -589,7 +606,6 @@ writelog(FILE *fp, const git_oid *oid)
 
        git_revwalk_new(&w, repo);
        git_revwalk_push(w, oid);
-       git_revwalk_sorting(w, GIT_SORT_TIME);
        git_revwalk_simplify_first_parent(w);
 
        while (!git_revwalk_next(&id, w)) {
@@ -719,7 +735,6 @@ writeatom(FILE *fp)
 
        git_revwalk_new(&w, repo);
        git_revwalk_push_head(w);
-       git_revwalk_sorting(w, GIT_SORT_TIME);
        git_revwalk_simplify_first_parent(w);
 
        for (i = 0; i < m && !git_revwalk_next(&id, w); i++) {
@@ -1037,7 +1052,6 @@ main(int argc, char *argv[])
 {
        git_object *obj = NULL;
        const git_oid *head = NULL;
-       const git_error *e = NULL;
        mode_t mask;
        FILE *fp, *fpread;
        char path[PATH_MAX], repodirabs[PATH_MAX + 1], *p;
@@ -1084,8 +1098,7 @@ main(int argc, char *argv[])
 
        if (git_repository_open_ext(&repo, repodir,
                GIT_REPOSITORY_OPEN_NO_SEARCH, NULL) < 0) {
-               e = giterr_last();
-               fprintf(stderr, "%s: %s\n", argv[0], e->message);
+               fprintf(stderr, "%s: cannot open repository\n", argv[0]);
                return 1;
        }