1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
|
#!/usr/bin/env bash
. "$(dirname "$0")/fixtures/migrate.sh"
. "$(dirname "$0")/testlib.sh"
begin_test "migrate import (--fixup)"
(
set -e
setup_single_local_branch_tracked_corrupt
txt_oid="$(calc_oid "$(git cat-file -p :a.txt)")"
git lfs migrate import --everything --fixup --yes
assert_pointer "refs/heads/main" "a.txt" "$txt_oid" "120"
assert_local_object "$txt_oid" "120"
main="$(git rev-parse refs/heads/main)"
main_attrs="$(git cat-file -p "$main:.gitattributes")"
echo "$main_attrs" | grep -q "*.txt filter=lfs diff=lfs merge=lfs"
)
end_test
begin_test "migrate import (--fixup, complex nested)"
(
set -e
setup_single_local_branch_complex_tracked
a_oid="$(calc_oid "$(git cat-file -p :a.txt)")"
b_oid="$(calc_oid "$(git cat-file -p :dir/b.txt)")"
git lfs migrate import --everything --fixup --yes
assert_pointer "refs/heads/main" "a.txt" "$a_oid" "1"
refute_pointer "refs/heads/main" "b.txt"
assert_local_object "$a_oid" "1"
refute_local_object "$b_oid" "1"
main="$(git rev-parse refs/heads/main)"
main_attrs="$(git cat-file -p "$main:.gitattributes")"
main_dir_attrs="$(git cat-file -p "$main:dir/.gitattributes")"
echo "$main_attrs" | grep -q "*.txt filter=lfs diff=lfs merge=lfs"
echo "$main_dir_attrs" | grep -q "*.txt !filter !diff !merge"
)
end_test
begin_test "migrate import (--fixup, --include)"
(
set -e
setup_single_local_branch_tracked_corrupt
git lfs migrate import --everything --fixup --yes --include="*.txt" 2>&1 \
| tee migrate.log
if [ "${PIPESTATUS[0]}" -eq 0 ]; then
echo >&2 "fatal: expected 'git lfs migrate ...' to fail, didn't ..."
exit 1
fi
grep -q "fatal: cannot use --fixup with --include, --exclude" migrate.log
)
end_test
begin_test "migrate import (--fixup, --exclude)"
(
set -e
setup_single_local_branch_tracked_corrupt
git lfs migrate import --everything --fixup --yes --exclude="*.txt" 2>&1 \
| tee migrate.log
if [ "${PIPESTATUS[0]}" -eq 0 ]; then
echo >&2 "fatal: expected 'git lfs migrate ...' to fail, didn't ..."
exit 1
fi
grep -q "fatal: cannot use --fixup with --include, --exclude" migrate.log
)
end_test
begin_test "migrate import (--fixup, --no-rewrite)"
(
set -e
setup_single_local_branch_tracked_corrupt
git lfs migrate import --everything --fixup --yes --no-rewrite 2>&1 \
| tee migrate.log
if [ "${PIPESTATUS[0]}" -eq 0 ]; then
echo >&2 "fatal: expected 'git lfs migrate ...' to fail, didn't ..."
exit 1
fi
grep -q "fatal: --no-rewrite and --fixup cannot be combined" migrate.log
)
end_test
begin_test "migrate import (--fixup with remote tags)"
(
set -e
setup_single_local_branch_tracked_corrupt
git lfs uninstall
base64 < /dev/urandom | head -c 120 > b.txt
git add b.txt
git commit -m "b.txt"
git tag -m tag1 -a tag1
git reset --hard HEAD^
git lfs install
cwd=$(pwd)
cd "$TRASHDIR"
git clone "$cwd" "$reponame-2"
cd "$reponame-2"
# We're checking here that this succeeds even though it does nothing in this
# case.
git lfs migrate import --fixup --yes main
)
end_test
|