#!/bin/sh test_description='git-merge Do not overwrite changes.' . ./test-lib.sh test_expect_success 'setup' ' echo c0 > c0.c && git add c0.c && git commit -m c0 && git tag c0 && echo c1 > c1.c && git add c1.c && git commit -m c1 && git tag c1 && git reset --hard c0 && echo c2 > c2.c && git add c2.c && git commit -m c2 && git tag c2 && git reset --hard c1 && echo "c1 a" > c1.c && git add c1.c && git commit -m "c1 a" && git tag c1a && echo "VERY IMPORTANT CHANGES" > important ' test_expect_success 'will not overwrite untracked file' ' git reset --hard c1 && cat important > c2.c && ! git merge c2 && test_cmp important c2.c ' test_expect_success 'will not overwrite new file' ' git reset --hard c1 && cat important > c2.c && git add c2.c && ! git merge c2 && test_cmp important c2.c ' test_expect_success 'will not overwrite staged changes' ' git reset --hard c1 && cat important > c2.c && git add c2.c && rm c2.c && ! git merge c2 && git checkout c2.c && test_cmp important c2.c ' test_expect_success 'will not overwrite removed file' ' git reset --hard c1 && git rm c1.c && git commit -m "rm c1.c" && cat important > c1.c && ! git merge c1a && test_cmp important c1.c ' test_expect_success 'will not overwrite re-added file' ' git reset --hard c1 && git rm c1.c && git commit -m "rm c1.c" && cat important > c1.c && git add c1.c && ! git merge c1a && test_cmp important c1.c ' test_expect_success 'will not overwrite removed file with staged changes' ' git reset --hard c1 && git rm c1.c && git commit -m "rm c1.c" && cat important > c1.c && git add c1.c && rm c1.c && ! git merge c1a && git checkout c1.c && test_cmp important c1.c ' test_done