mirror of
https://git.proxmox.com/git/libgit2
synced 2025-08-04 13:05:35 +00:00
Fix buffer blame with new lines at end of file
This commit is contained in:
parent
089297b2cd
commit
9db56cc4a7
15
src/blame.c
15
src/blame.c
@ -386,9 +386,13 @@ static int buffer_hunk_cb(
|
||||
wedge_line = (hunk->old_lines == 0) ? hunk->new_start : hunk->old_start;
|
||||
blame->current_diff_line = wedge_line;
|
||||
|
||||
/* If this hunk doesn't start between existing hunks, split a hunk up so it does */
|
||||
blame->current_hunk = (git_blame_hunk*)git_blame_get_hunk_byline(blame, wedge_line);
|
||||
if (!hunk_starts_at_or_after_line(blame->current_hunk, wedge_line)){
|
||||
if (!blame->current_hunk) {
|
||||
/* Line added at the end of the file */
|
||||
blame->current_hunk = new_hunk(wedge_line, 0, wedge_line, blame->path);
|
||||
git_vector_insert(&blame->hunks, blame->current_hunk);
|
||||
} else if (!hunk_starts_at_or_after_line(blame->current_hunk, wedge_line)){
|
||||
/* If this hunk doesn't start between existing hunks, split a hunk up so it does */
|
||||
blame->current_hunk = split_hunk_in_vector(&blame->hunks, blame->current_hunk,
|
||||
wedge_line - blame->current_hunk->orig_start_line_number, true);
|
||||
}
|
||||
@ -409,13 +413,6 @@ static int buffer_line_cb(
|
||||
GIT_UNUSED(hunk);
|
||||
GIT_UNUSED(line);
|
||||
|
||||
#ifdef DO_DEBUG
|
||||
{
|
||||
char *str = git__substrdup(content, content_len);
|
||||
git__free(str);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (line->origin == GIT_DIFF_LINE_ADDITION) {
|
||||
if (hunk_is_bufferblame(blame->current_hunk) &&
|
||||
hunk_ends_at_or_before_line(blame->current_hunk, blame->current_diff_line)) {
|
||||
|
@ -152,8 +152,9 @@ CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
|
||||
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\n\
|
||||
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\n\
|
||||
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\n\
|
||||
\n\
|
||||
abc\n\
|
||||
\n";
|
||||
def\n";
|
||||
cl_git_pass(git_blame_buffer(&g_bufferblame, g_fileblame, buffer, strlen(buffer)));
|
||||
|
||||
cl_assert_equal_i(5, git_blame_get_hunk_count(g_bufferblame));
|
||||
@ -161,6 +162,6 @@ abc\n\
|
||||
check_blame_hunk_index(g_repo, g_bufferblame, 1, 5, 1, 1, "b99f7ac0", "b.txt");
|
||||
check_blame_hunk_index(g_repo, g_bufferblame, 2, 6, 5, 0, "63d671eb", "b.txt");
|
||||
check_blame_hunk_index(g_repo, g_bufferblame, 3, 11, 5, 0, "aa06ecca", "b.txt");
|
||||
check_blame_hunk_index(g_repo, g_bufferblame, 4, 16, 1, 0, "00000000", "b.txt");
|
||||
check_blame_hunk_index(g_repo, g_bufferblame, 4, 16, 2, 0, "00000000", "b.txt");
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user