diff options
author | Vincent Ambo <mail@tazj.in> | 2021-09-21T10·03+0300 |
---|---|---|
committer | Vincent Ambo <mail@tazj.in> | 2021-09-21T11·29+0300 |
commit | 43b1791ec601732ac31195df96781a848360a9ac (patch) | |
tree | daae8d638343295d2f1f7da955e556ef4c958864 /third_party/git/t/t8013-blame-ignore-revs.sh | |
parent | 2d8e7dc9d9c38127ec4ebd13aee8e8f586a43318 (diff) |
chore(3p/git): Unvendor git and track patches instead r/2903
This was vendored a long time ago under the expectation that keeping it in sync with cgit would be easier this way, but it has proven not to be a big issue. On the other hand, a vendored copy of git is an annoying maintenance burden. It is much easier to rebase the single (dottime) patch that we have. This removes the vendored copy of git and instead passes the git source code to cgit via `pkgs.srcOnly`, which includes the applied patch so that cgit can continue rendering dottime. Change-Id: If31f62dea7ce688fd1b9050204e9378019775f2b
Diffstat (limited to 'third_party/git/t/t8013-blame-ignore-revs.sh')
-rwxr-xr-x | third_party/git/t/t8013-blame-ignore-revs.sh | 291 |
1 files changed, 0 insertions, 291 deletions
diff --git a/third_party/git/t/t8013-blame-ignore-revs.sh b/third_party/git/t/t8013-blame-ignore-revs.sh deleted file mode 100755 index 24ae5018e885..000000000000 --- a/third_party/git/t/t8013-blame-ignore-revs.sh +++ /dev/null @@ -1,291 +0,0 @@ -#!/bin/sh - -test_description='ignore revisions when blaming' -. ./test-lib.sh - -# Creates: -# A--B--X -# A added line 1 and B added line 2. X makes changes to those lines. Sanity -# check that X is blamed for both lines. -test_expect_success setup ' - test_commit A file line1 && - - echo line2 >>file && - git add file && - test_tick && - git commit -m B && - git tag B && - - test_write_lines line-one line-two >file && - git add file && - test_tick && - git commit -m X && - git tag X && - git tag -a -m "X (annotated)" XT && - - git blame --line-porcelain file >blame_raw && - - grep -E "^[0-9a-f]+ [0-9]+ 1" blame_raw | sed -e "s/ .*//" >actual && - git rev-parse X >expect && - test_cmp expect actual && - - grep -E "^[0-9a-f]+ [0-9]+ 2" blame_raw | sed -e "s/ .*//" >actual && - git rev-parse X >expect && - test_cmp expect actual -' - -# Ensure bogus --ignore-rev requests are caught -test_expect_success 'validate --ignore-rev' ' - test_must_fail git blame --ignore-rev X^{tree} file -' - -# Ensure bogus --ignore-revs-file requests are caught -test_expect_success 'validate --ignore-revs-file' ' - git rev-parse X^{tree} >ignore_x && - test_must_fail git blame --ignore-revs-file ignore_x file -' - -for I in X XT -do - # Ignore X (or XT), make sure A is blamed for line 1 and B for line 2. - # Giving X (i.e. commit) and XT (i.e. annotated tag to commit) should - # produce the same result. - test_expect_success "ignore_rev_changing_lines ($I)" ' - git blame --line-porcelain --ignore-rev $I file >blame_raw && - - grep -E "^[0-9a-f]+ [0-9]+ 1" blame_raw | sed -e "s/ .*//" >actual && - git rev-parse A >expect && - test_cmp expect actual && - - grep -E "^[0-9a-f]+ [0-9]+ 2" blame_raw | sed -e "s/ .*//" >actual && - git rev-parse B >expect && - test_cmp expect actual - ' -done - -# For ignored revs that have added 'unblamable' lines, attribute those to the -# ignored commit. -# A--B--X--Y -# Where Y changes lines 1 and 2, and adds lines 3 and 4. The added lines ought -# to have nothing in common with "line-one" or "line-two", to keep any -# heuristics from matching them with any lines in the parent. -test_expect_success ignore_rev_adding_unblamable_lines ' - test_write_lines line-one-change line-two-changed y3 y4 >file && - git add file && - test_tick && - git commit -m Y && - git tag Y && - - git rev-parse Y >expect && - git blame --line-porcelain file --ignore-rev Y >blame_raw && - - grep -E "^[0-9a-f]+ [0-9]+ 3" blame_raw | sed -e "s/ .*//" >actual && - test_cmp expect actual && - - grep -E "^[0-9a-f]+ [0-9]+ 4" blame_raw | sed -e "s/ .*//" >actual && - test_cmp expect actual -' - -# Ignore X and Y, both in separate files. Lines 1 == A, 2 == B. -test_expect_success ignore_revs_from_files ' - git rev-parse X >ignore_x && - git rev-parse Y >ignore_y && - git blame --line-porcelain file --ignore-revs-file ignore_x --ignore-revs-file ignore_y >blame_raw && - - grep -E "^[0-9a-f]+ [0-9]+ 1" blame_raw | sed -e "s/ .*//" >actual && - git rev-parse A >expect && - test_cmp expect actual && - - grep -E "^[0-9a-f]+ [0-9]+ 2" blame_raw | sed -e "s/ .*//" >actual && - git rev-parse B >expect && - test_cmp expect actual -' - -# Ignore X from the config option, Y from a file. -test_expect_success ignore_revs_from_configs_and_files ' - git config --add blame.ignoreRevsFile ignore_x && - git blame --line-porcelain file --ignore-revs-file ignore_y >blame_raw && - - grep -E "^[0-9a-f]+ [0-9]+ 1" blame_raw | sed -e "s/ .*//" >actual && - git rev-parse A >expect && - test_cmp expect actual && - - grep -E "^[0-9a-f]+ [0-9]+ 2" blame_raw | sed -e "s/ .*//" >actual && - git rev-parse B >expect && - test_cmp expect actual -' - -# Override blame.ignoreRevsFile (ignore_x) with an empty string. X should be -# blamed now for lines 1 and 2, since we are no longer ignoring X. -test_expect_success override_ignore_revs_file ' - git blame --line-porcelain file --ignore-revs-file "" --ignore-revs-file ignore_y >blame_raw && - git rev-parse X >expect && - - grep -E "^[0-9a-f]+ [0-9]+ 1" blame_raw | sed -e "s/ .*//" >actual && - test_cmp expect actual && - - grep -E "^[0-9a-f]+ [0-9]+ 2" blame_raw | sed -e "s/ .*//" >actual && - test_cmp expect actual - ' -test_expect_success bad_files_and_revs ' - test_must_fail git blame file --ignore-rev NOREV 2>err && - test_i18ngrep "cannot find revision NOREV to ignore" err && - - test_must_fail git blame file --ignore-revs-file NOFILE 2>err && - test_i18ngrep "could not open.*: NOFILE" err && - - echo NOREV >ignore_norev && - test_must_fail git blame file --ignore-revs-file ignore_norev 2>err && - test_i18ngrep "invalid object name: NOREV" err -' - -# For ignored revs that have added 'unblamable' lines, mark those lines with a -# '*' -# A--B--X--Y -# Lines 3 and 4 are from Y and unblamable. This was set up in -# ignore_rev_adding_unblamable_lines. -test_expect_success mark_unblamable_lines ' - git config --add blame.markUnblamableLines true && - - git blame --ignore-rev Y file >blame_raw && - echo "*" >expect && - - sed -n "3p" blame_raw | cut -c1 >actual && - test_cmp expect actual && - - sed -n "4p" blame_raw | cut -c1 >actual && - test_cmp expect actual -' - -# Commit Z will touch the first two lines. Y touched all four. -# A--B--X--Y--Z -# The blame output when ignoring Z should be: -# ?Y ... 1) -# ?Y ... 2) -# Y ... 3) -# Y ... 4) -# We're checking only the first character -test_expect_success mark_ignored_lines ' - git config --add blame.markIgnoredLines true && - - test_write_lines line-one-Z line-two-Z y3 y4 >file && - git add file && - test_tick && - git commit -m Z && - git tag Z && - - git blame --ignore-rev Z file >blame_raw && - echo "?" >expect && - - sed -n "1p" blame_raw | cut -c1 >actual && - test_cmp expect actual && - - sed -n "2p" blame_raw | cut -c1 >actual && - test_cmp expect actual && - - sed -n "3p" blame_raw | cut -c1 >actual && - ! test_cmp expect actual && - - sed -n "4p" blame_raw | cut -c1 >actual && - ! test_cmp expect actual -' - -# For ignored revs that added 'unblamable' lines and more recent commits changed -# the blamable lines, mark the unblamable lines with a -# '*' -# A--B--X--Y--Z -# Lines 3 and 4 are from Y and unblamable, as set up in -# ignore_rev_adding_unblamable_lines. Z changed lines 1 and 2. -test_expect_success mark_unblamable_lines_intermediate ' - git config --add blame.markUnblamableLines true && - - git blame --ignore-rev Y file >blame_raw 2>stderr && - echo "*" >expect && - - sed -n "3p" blame_raw | cut -c1 >actual && - test_cmp expect actual && - - sed -n "4p" blame_raw | cut -c1 >actual && - test_cmp expect actual -' - -# The heuristic called by guess_line_blames() tries to find the size of a -# blame_entry 'e' in the parent's address space. Those calculations need to -# check for negative or zero values for when a blame entry is completely outside -# the window of the parent's version of a file. -# -# This happens when one commit adds several lines (commit B below). A later -# commit (C) changes one line in the middle of B's change. Commit C gets blamed -# for its change, and that breaks up B's change into multiple blame entries. -# When processing B, one of the blame_entries is outside A's window (which was -# zero - it had no lines added on its side of the diff). -# -# A--B--C, ignore B to test the ignore heuristic's boundary checks. -test_expect_success ignored_chunk_negative_parent_size ' - rm -rf .git/ && - git init && - - test_write_lines L1 L2 L7 L8 L9 >file && - git add file && - test_tick && - git commit -m A && - git tag A && - - test_write_lines L1 L2 L3 L4 L5 L6 L7 L8 L9 >file && - git add file && - test_tick && - git commit -m B && - git tag B && - - test_write_lines L1 L2 L3 L4 xxx L6 L7 L8 L9 >file && - git add file && - test_tick && - git commit -m C && - git tag C && - - git blame file --ignore-rev B >blame_raw -' - -# Resetting the repo and creating: -# -# A--B--M -# \ / -# C-+ -# -# 'A' creates a file. B changes line 1, and C changes line 9. M merges. -test_expect_success ignore_merge ' - rm -rf .git/ && - git init && - - test_write_lines L1 L2 L3 L4 L5 L6 L7 L8 L9 >file && - git add file && - test_tick && - git commit -m A && - git tag A && - - test_write_lines BB L2 L3 L4 L5 L6 L7 L8 L9 >file && - git add file && - test_tick && - git commit -m B && - git tag B && - - git reset --hard A && - test_write_lines L1 L2 L3 L4 L5 L6 L7 L8 CC >file && - git add file && - test_tick && - git commit -m C && - git tag C && - - test_merge M B && - git blame --line-porcelain file --ignore-rev M >blame_raw && - - grep -E "^[0-9a-f]+ [0-9]+ 1" blame_raw | sed -e "s/ .*//" >actual && - git rev-parse B >expect && - test_cmp expect actual && - - grep -E "^[0-9a-f]+ [0-9]+ 9" blame_raw | sed -e "s/ .*//" >actual && - git rev-parse C >expect && - test_cmp expect actual -' - -test_done |