#!/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/master" "a.txt" "$txt_oid" "120" assert_local_object "$txt_oid" "120" master="$(git rev-parse refs/heads/master)" master_attrs="$(git cat-file -p "$master:.gitattributes")" echo "$master_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/master" "a.txt" "$a_oid" "1" refute_pointer "refs/heads/master" "b.txt" assert_local_object "$a_oid" "1" refute_local_object "$b_oid" "1" master="$(git rev-parse refs/heads/master)" master_attrs="$(git cat-file -p "$master:.gitattributes")" master_dir_attrs="$(git cat-file -p "$master:dir/.gitattributes")" echo "$master_attrs" | grep -q "*.txt filter=lfs diff=lfs merge=lfs" echo "$master_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