Mercurial > hg > mercurial-crew-with-dirclash
view tests/test-convert-git @ 5483:0c43f87baba3 default tip
Fix file-changed-to-dir and dir-to-file commits (issue660).
Allow adding to dirstate files that clash with previously existing
but marked for removal. Protect from reintroducing clashes by revert.
This change doesn't address related issues with update. Current
workaround is to do "clean" update by manually removing conflicting
files/dirs from working directory.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Sat, 27 Oct 2007 16:27:55 +0400 |
parents | a5a7f7fd5554 |
children |
line wrap: on
line source
#!/bin/sh "$TESTDIR/hghave" git || exit 80 echo "[extensions]" >> $HGRCPATH echo "convert=" >> $HGRCPATH echo 'hgext.graphlog =' >> $HGRCPATH GIT_AUTHOR_NAME='test'; export GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL='test@example.org'; export GIT_AUTHOR_EMAIL GIT_AUTHOR_DATE="2007-01-01 00:00:00 +0000"; export GIT_AUTHOR_DATE GIT_COMMITTER_NAME="$GIT_AUTHOR_NAME"; export GIT_COMMITTER_NAME GIT_COMMITTER_EMAIL="$GIT_AUTHOR_EMAIL"; export GIT_COMMITTER_EMAIL GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"; export GIT_COMMITTER_DATE count=10 commit() { GIT_AUTHOR_DATE="2007-01-01 00:00:$count +0000" GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE" git commit "$@" >/dev/null 2>/dev/null || echo "git commit error" count=`expr $count + 1` } mkdir git-repo cd git-repo git init-db >/dev/null 2>/dev/null echo a > a mkdir d echo b > d/b git add a d commit -a -m t1 # Remove the directory, then try to replace it with a file # (issue 754) git rm -f d/b commit -m t2 echo d > d git add d commit -m t3 echo b >> a commit -a -m t4.1 git checkout -b other HEAD^ >/dev/null 2>/dev/null echo c > a echo a >> a commit -a -m t4.2 git checkout master >/dev/null 2>/dev/null git pull --no-commit . other > /dev/null 2>/dev/null commit -m 'Merge branch other' cd .. hg convert --datesort git-repo hg -R git-repo-hg tip -v count=10 mkdir git-repo2 cd git-repo2 git init-db >/dev/null 2>/dev/null echo foo > foo git add foo commit -a -m 'add foo' echo >> foo commit -a -m 'change foo' git checkout -b Bar HEAD^ >/dev/null 2>/dev/null echo quux >> quux git add quux commit -a -m 'add quux' echo bar > bar git add bar commit -a -m 'add bar' git checkout -b Baz HEAD^ >/dev/null 2>/dev/null echo baz > baz git add baz commit -a -m 'add baz' git checkout master >/dev/null 2>/dev/null git pull --no-commit . Bar Baz > /dev/null 2>/dev/null commit -m 'Octopus merge' echo bar >> bar commit -a -m 'change bar' git checkout -b Foo HEAD^ >/dev/null 2>/dev/null echo >> foo commit -a -m 'change foo' git checkout master >/dev/null 2>/dev/null git pull --no-commit -s ours . Foo > /dev/null 2>/dev/null commit -m 'Discard change to foo' cd .. glog() { hg glog --template '#rev# "#desc|firstline#" files: #files#\n' "$@" } splitrepo() { msg="$1" files="$2" opts=$3 echo "% $files: $msg" prefix=`echo "$files" | sed -e 's/ /-/g'` fmap="$prefix.fmap" repo="$prefix.repo" for i in $files; do echo "include $i" >> "$fmap" done hg -q convert $opts --filemap "$fmap" --datesort git-repo2 "$repo" glog -R "$repo" hg -R "$repo" manifest --debug } echo '% full conversion' hg -q convert --datesort git-repo2 fullrepo glog -R fullrepo hg -R fullrepo manifest --debug splitrepo 'octopus merge' 'foo bar baz' splitrepo 'only some parents of an octopus merge; "discard" a head' 'foo baz quux'