summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/git2/blame.h8
-rw-r--r--src/blame.c8
2 files changed, 12 insertions, 4 deletions
diff --git a/include/git2/blame.h b/include/git2/blame.h
index fe51371ab..b98c6f0d7 100644
--- a/include/git2/blame.h
+++ b/include/git2/blame.h
@@ -33,13 +33,13 @@ typedef enum {
* NOT IMPLEMENTED. */
GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES = (1<<1),
/** Track lines that have been copied from another file that exists in the
- * same commit (like `git blame -CC`).
+ * same commit (like `git blame -CC`). Implies SAME_FILE.
* NOT IMPLEMENTED. */
- GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES = (1<<1 | 1<<2),
+ GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES = (1<<2),
/** Track lines that have been copied from another file that exists in *any*
- * commit (like `git blame -CCC`).
+ * commit (like `git blame -CCC`). Implies SAME_COMMIT_COPIES.
* NOT IMPLEMENTED. */
- GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES = (1<<1 | 1<<2 | 1<<3),
+ GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES = (1<<3),
} git_blame_flag_t;
/**
diff --git a/src/blame.c b/src/blame.c
index 5b0ebd4fe..e698d3941 100644
--- a/src/blame.c
+++ b/src/blame.c
@@ -184,6 +184,14 @@ static void normalize_options(
/* min_line 0 really means 1 */
if (!out->min_line) out->min_line = 1;
/* max_line 0 really means N, but we don't know N yet */
+
+ /* Fix up option implications */
+ if (out->flags & GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES)
+ out->flags |= GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES;
+ if (out->flags & GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES)
+ out->flags |= GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES;
+ if (out->flags & GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES)
+ out->flags |= GIT_BLAME_TRACK_COPIES_SAME_FILE;
}
static git_blame_hunk *split_hunk_in_vector(