Revision 48679e5c2d059b9b198d6f414dd80aa921d23002 authored by Eric Wong on 28 February 2009, 03:40:16 UTC, committed by Junio C Hamano on 28 February 2009, 05:53:09 UTC
Even though this will break things for some extremely rare repositories
used by broken Windows clients, it's probably not worth enabling this by
default as it has negatively affected many more users than it has helped
from what we've seen so far.

The extremely rare repositories that have broken symlinks in them will be
silently corrupted in import; but users can still reenable this option and
restart the import.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
1 parent 48fce93
Raw File
t3400-rebase.sh
#!/bin/sh
#
# Copyright (c) 2005 Amos Waterland
#

test_description='git rebase should not destroy author information

This test runs git rebase and checks that the author information is not lost.
'
. ./test-lib.sh

GIT_AUTHOR_EMAIL=bogus_email_address
export GIT_AUTHOR_EMAIL

test_expect_success \
    'prepare repository with topic branches' \
    'git config core.logAllRefUpdates true &&
     echo First > A &&
     git update-index --add A &&
     git commit -m "Add A." &&
     git checkout -b my-topic-branch &&
     echo Second > B &&
     git update-index --add B &&
     git commit -m "Add B." &&
     git checkout -f master &&
     echo Third >> A &&
     git update-index A &&
     git commit -m "Modify A." &&
     git checkout -b side my-topic-branch &&
     echo Side >> C &&
     git add C &&
     git commit -m "Add C" &&
     git checkout -b nonlinear my-topic-branch &&
     echo Edit >> B &&
     git add B &&
     git commit -m "Modify B" &&
     git merge side &&
     git checkout -b upstream-merged-nonlinear &&
     git merge master &&
     git checkout -f my-topic-branch &&
     git tag topic
'

test_expect_success 'rebase against master' '
     git rebase master'

test_expect_success \
    'the rebase operation should not have destroyed author information' \
    '! (git log | grep "Author:" | grep "<>")'

test_expect_success 'rebase after merge master' '
     git reset --hard topic &&
     git merge master &&
     git rebase master &&
     ! (git show | grep "^Merge:")
'

test_expect_success 'rebase of history with merges is linearized' '
     git checkout nonlinear &&
     test 4 = $(git rev-list master.. | wc -l) &&
     git rebase master &&
     test 3 = $(git rev-list master.. | wc -l)
'

test_expect_success \
    'rebase of history with merges after upstream merge is linearized' '
     git checkout upstream-merged-nonlinear &&
     test 5 = $(git rev-list master.. | wc -l) &&
     git rebase master &&
     test 3 = $(git rev-list master.. | wc -l)
'

test_expect_success 'rebase a single mode change' '
     git checkout master &&
     echo 1 > X &&
     git add X &&
     test_tick &&
     git commit -m prepare &&
     git checkout -b modechange HEAD^ &&
     echo 1 > X &&
     git add X &&
     chmod a+x A &&
     test_tick &&
     git commit -m modechange A X &&
     GIT_TRACE=1 git rebase master
'

test_expect_success 'HEAD was detached during rebase' '
     test $(git rev-parse HEAD@{1}) != $(git rev-parse modechange@{1})
'

test_expect_success 'Show verbose error when HEAD could not be detached' '
     : > B &&
     test_must_fail git rebase topic 2> output.err > output.out &&
     grep "Untracked working tree file .B. would be overwritten" output.err
'

test_done
back to top