3 # Copyright (c) 2005 Fredrik Kuivinen
 
   6 test_description='Test merge with directory/file conflicts'
 
   9 test_expect_success 'prepare repository' '
 
  12         git commit -m initial &&
 
  18         git commit -m "File: dir/foo" &&
 
  23         git commit -m "File: dir"
 
  26 test_expect_success 'Merge with d/f conflicts' '
 
  27         test_expect_code 1 git merge "merge msg" B master
 
  30 test_expect_success 'F/D conflict' '
 
  32         git checkout master &&
 
  36         echo FILE >before/one &&
 
  39         git commit -m first &&
 
  42         git mv before after &&
 
  45         git checkout -b para HEAD^ &&
 
  46         echo COMPLETELY ANOTHER FILE >another &&
 
  53 test_expect_success 'setup modify/delete + directory/file conflict' '
 
  54         git checkout --orphan modify &&
 
  58         printf "a\nb\nc\nd\ne\nf\ng\nh\n" >letters &&
 
  60         git commit -m initial &&
 
  62         # Throw in letters.txt for sorting order fun
 
  63         # ("letters.txt" sorts between "letters" and "letters/file")
 
  65         echo "version 2" >letters.txt &&
 
  66         git add letters letters.txt &&
 
  67         git commit -m modified &&
 
  69         git checkout -b delete HEAD^ &&
 
  73         echo "version 1" >letters.txt &&
 
  74         git add letters letters.txt &&
 
  78 test_expect_success 'modify/delete + directory/file conflict' '
 
  79         git checkout delete^0 &&
 
  80         test_must_fail git merge modify &&
 
  82         test 5 -eq $(git ls-files -s | wc -l) &&
 
  83         test 4 -eq $(git ls-files -u | wc -l) &&
 
  84         test 1 -eq $(git ls-files -o | wc -l) &&
 
  86         test -f letters/file &&
 
  87         test -f letters.txt &&
 
  88         test -f letters~modify
 
  91 test_expect_success 'modify/delete + directory/file conflict; other way' '
 
  92         # Yes, we really need the double reset since "letters" appears as
 
  93         # both a file and a directory.
 
  97         git checkout modify^0 &&
 
  99         test_must_fail git merge delete &&
 
 101         test 5 -eq $(git ls-files -s | wc -l) &&
 
 102         test 4 -eq $(git ls-files -u | wc -l) &&
 
 103         test 1 -eq $(git ls-files -o | wc -l) &&
 
 105         test -f letters/file &&
 
 106         test -f letters.txt &&