t / t9106-git-svn-commit-diff-clobber.shon commit t9600: require cvsps 2.1 to perform tests (dcbcb70)
   1#!/bin/sh
   2#
   3# Copyright (c) 2006 Eric Wong
   4test_description='git-svn commit-diff clobber'
   5. ./lib-git-svn.sh
   6
   7test_expect_success 'initialize repo' "
   8        mkdir import &&
   9        cd import &&
  10        echo initial > file &&
  11        svn import -m 'initial' . $svnrepo &&
  12        cd .. &&
  13        echo initial > file &&
  14        git update-index --add file &&
  15        git commit -a -m 'initial'
  16        "
  17test_expect_success 'commit change from svn side' "
  18        svn co $svnrepo t.svn &&
  19        cd t.svn &&
  20        echo second line from svn >> file &&
  21        poke file &&
  22        svn commit -m 'second line from svn' &&
  23        cd .. &&
  24        rm -rf t.svn
  25        "
  26
  27test_expect_failure 'commit conflicting change from git' "
  28        echo second line from git >> file &&
  29        git commit -a -m 'second line from git' &&
  30        git-svn commit-diff -r1 HEAD~1 HEAD $svnrepo
  31        " || true
  32
  33test_expect_success 'commit complementing change from git' "
  34        git reset --hard HEAD~1 &&
  35        echo second line from svn >> file &&
  36        git commit -a -m 'second line from svn' &&
  37        echo third line from git >> file &&
  38        git commit -a -m 'third line from git' &&
  39        git-svn commit-diff -r2 HEAD~1 HEAD $svnrepo
  40        "
  41
  42test_expect_failure 'dcommit fails to commit because of conflict' "
  43        git-svn init $svnrepo &&
  44        git-svn fetch &&
  45        git reset --hard refs/remotes/git-svn &&
  46        svn co $svnrepo t.svn &&
  47        cd t.svn &&
  48        echo fourth line from svn >> file &&
  49        poke file &&
  50        svn commit -m 'fourth line from svn' &&
  51        cd .. &&
  52        rm -rf t.svn &&
  53        echo 'fourth line from git' >> file &&
  54        git commit -a -m 'fourth line from git' &&
  55        git-svn dcommit
  56        " || true
  57
  58test_expect_success 'dcommit does the svn equivalent of an index merge' "
  59        git reset --hard refs/remotes/git-svn &&
  60        echo 'index merge' > file2 &&
  61        git update-index --add file2 &&
  62        git commit -a -m 'index merge' &&
  63        echo 'more changes' >> file2 &&
  64        git update-index file2 &&
  65        git commit -a -m 'more changes' &&
  66        git-svn dcommit
  67        "
  68
  69test_expect_success 'commit another change from svn side' "
  70        svn co $svnrepo t.svn &&
  71        cd t.svn &&
  72                echo third line from svn >> file &&
  73                poke file &&
  74                svn commit -m 'third line from svn' &&
  75        cd .. &&
  76        rm -rf t.svn
  77        "
  78
  79test_expect_failure 'multiple dcommit from git-svn will not clobber svn' "
  80        git reset --hard refs/remotes/git-svn &&
  81        echo new file >> new-file &&
  82        git update-index --add new-file &&
  83        git commit -a -m 'new file' &&
  84        echo clobber > file &&
  85        git commit -a -m 'clobber' &&
  86        git svn dcommit
  87        " || true
  88
  89
  90test_expect_success 'check that rebase really failed' 'test -d .dotest'
  91
  92test_expect_success 'resolve, continue the rebase and dcommit' "
  93        echo clobber and I really mean it > file &&
  94        git update-index file &&
  95        git rebase --continue &&
  96        git svn dcommit
  97        "
  98
  99test_done