diff --git a/commands/command_migrate_import.go b/commands/command_migrate_import.go index 4fbeef8e..e2bff9ed 100644 --- a/commands/command_migrate_import.go +++ b/commands/command_migrate_import.go @@ -283,7 +283,7 @@ func trackedFromFilter(filter *filepathfilter.Filter) *tools.OrderedSet { } for _, exclude := range filter.Exclude() { - tracked.Add(fmt.Sprintf("%s text -filter -merge -diff", escapeAttrPattern(exclude))) + tracked.Add(fmt.Sprintf("%s !text -filter -merge -diff", escapeAttrPattern(exclude))) } return tracked diff --git a/t/t-migrate-import.sh b/t/t-migrate-import.sh index ca25d481..80c1638a 100755 --- a/t/t-migrate-import.sh +++ b/t/t-migrate-import.sh @@ -439,6 +439,38 @@ EOF) ) end_test +begin_test "migrate import (--exclude with existing .gitattributes)" +( + set -e + + setup_local_branch_with_gitattrs + + pwd + + master="$(git rev-parse refs/heads/master)" + + txt_master_oid="$(calc_oid "$(git cat-file -p "$master:a.txt")")" + + git lfs migrate import --yes --include-ref=refs/heads/master --include="*.txt" --exclude="*.bin" + + assert_local_object "$txt_master_oid" "120" + + master="$(git rev-parse refs/heads/master)" + prev="$(git rev-parse refs/heads/master^1)" + + diff -u <(git cat-file -p $master:.gitattributes) <(cat <<-EOF +*.txt filter=lfs diff=lfs merge=lfs -text +*.other filter=lfs diff=lfs merge=lfs -text +*.bin !text -filter -merge -diff +EOF) + + diff -u <(git cat-file -p $prev:.gitattributes) <(cat <<-EOF +*.txt filter=lfs diff=lfs merge=lfs -text +*.bin !text -filter -merge -diff +EOF) +) +end_test + begin_test "migrate import (identical contents, different permissions)" ( set -e