t / t9114-git-svn-dcommit-merge.shon commit checkout -m: recreate merge when checking out of unmerged index (0cf8581)
   1#!/bin/sh
   2#
   3# Copyright (c) 2007 Eric Wong
   4# Based on a script by Joakim Tjernlund <joakim.tjernlund@transmode.se>
   5
   6test_description='git-svn dcommit handles merges'
   7
   8. ./lib-git-svn.sh
   9
  10big_text_block () {
  11cat << EOF
  12#
  13# (C) Copyright 2000 - 2005
  14# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
  15#
  16# See file CREDITS for list of people who contributed to this
  17# project.
  18#
  19# This program is free software; you can redistribute it and/or
  20# modify it under the terms of the GNU General Public License as
  21# published by the Free Software Foundation; either version 2 of
  22# the License, or (at your option) any later version.
  23#
  24# This program is distributed in the hope that it will be useful,
  25# but WITHOUT ANY WARRANTY; without even the implied warranty of
  26# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  27# GNU General Public License for more details.
  28#
  29# You should have received a copy of the GNU General Public License
  30# along with this program; if not, write to the Free Software
  31# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  32# MA 02111-1307 USA
  33#
  34EOF
  35}
  36
  37test_expect_success 'setup svn repository' '
  38        svn co "$svnrepo" mysvnwork &&
  39        mkdir -p mysvnwork/trunk &&
  40        cd mysvnwork &&
  41                big_text_block >> trunk/README &&
  42                svn add trunk &&
  43                svn ci -m "first commit" trunk &&
  44                cd ..
  45        '
  46
  47test_expect_success 'setup git mirror and merge' '
  48        git svn init "$svnrepo" -t tags -T trunk -b branches &&
  49        git svn fetch &&
  50        git checkout --track -b svn remotes/trunk &&
  51        git checkout -b merge &&
  52        echo new file > new_file &&
  53        git add new_file &&
  54        git commit -a -m "New file" &&
  55        echo hello >> README &&
  56        git commit -a -m "hello" &&
  57        echo add some stuff >> new_file &&
  58        git commit -a -m "add some stuff" &&
  59        git checkout svn &&
  60        mv -f README tmp &&
  61        echo friend > README &&
  62        cat tmp >> README &&
  63        git commit -a -m "friend" &&
  64        git pull . merge
  65        '
  66
  67test_debug 'gitk --all & sleep 1'
  68
  69test_expect_success 'verify pre-merge ancestry' "
  70        test x\`git rev-parse --verify refs/heads/svn^2\` = \
  71             x\`git rev-parse --verify refs/heads/merge\` &&
  72        git cat-file commit refs/heads/svn^ | grep '^friend$'
  73        "
  74
  75test_expect_success 'git svn dcommit merges' "
  76        git svn dcommit
  77        "
  78
  79test_debug 'gitk --all & sleep 1'
  80
  81test_expect_success 'verify post-merge ancestry' "
  82        test x\`git rev-parse --verify refs/heads/svn\` = \
  83             x\`git rev-parse --verify refs/remotes/trunk \` &&
  84        test x\`git rev-parse --verify refs/heads/svn^2\` = \
  85             x\`git rev-parse --verify refs/heads/merge\` &&
  86        git cat-file commit refs/heads/svn^ | grep '^friend$'
  87        "
  88
  89test_expect_success 'verify merge commit message' "
  90        git rev-list --pretty=raw -1 refs/heads/svn | \
  91          grep \"    Merge branch 'merge' into svn\"
  92        "
  93
  94test_done