mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 08:47:12 +03:00
33ac80b524
The output for "hg push" when there were no changes didn't quite match between Mercurial with and without Hg-Git, so I changed the behavior to bring it into synch. The existing "creating and sending data" message was changed to be included if --verbose is specified.
156 lines
4.4 KiB
Turing
156 lines
4.4 KiB
Turing
# Fails for some reason, need to investigate
|
|
# $ "$TESTDIR/hghave" git || exit 80
|
|
|
|
bail if the user does not have dulwich
|
|
$ python -c 'import dulwich, dulwich.repo' || exit 80
|
|
|
|
$ echo "[extensions]" >> $HGRCPATH
|
|
$ echo "hggit=$(echo $(dirname $TESTDIR))/hggit" >> $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`
|
|
> }
|
|
$ hgcommit()
|
|
> {
|
|
> HGDATE="2007-01-01 00:00:$count +0000"
|
|
> hg commit -d "$HGDATE" "$@" >/dev/null 2>/dev/null || echo "hg commit error"
|
|
> count=`expr $count + 1`
|
|
> }
|
|
|
|
$ mkdir gitrepo
|
|
$ cd gitrepo
|
|
$ git init
|
|
Initialized empty Git repository in $TESTTMP/gitrepo/.git/
|
|
|
|
$ echo alpha > alpha
|
|
$ git add alpha
|
|
$ commit -m "add alpha"
|
|
$ git checkout -b not-master 2>&1 | sed s/\'/\"/g
|
|
Switched to a new branch "not-master"
|
|
|
|
$ cd ..
|
|
$ hg clone gitrepo hgrepo | grep -v '^updating'
|
|
importing git objects into hg
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
|
$ cd hgrepo
|
|
$ echo beta > beta
|
|
$ hg add beta
|
|
$ hgcommit -m 'add beta'
|
|
|
|
|
|
$ echo gamma > gamma
|
|
$ hg add gamma
|
|
$ hgcommit -m 'add gamma'
|
|
|
|
$ hg book -r 1 beta
|
|
$ hg push -r beta
|
|
pushing to $TESTTMP/gitrepo
|
|
exporting hg objects to git
|
|
searching for changes
|
|
default::refs/heads/beta => GIT:cffa0e8d
|
|
|
|
$ cd ..
|
|
|
|
$ echo % should have two different branches
|
|
% should have two different branches
|
|
$ cd gitrepo
|
|
$ git branch -v
|
|
beta cffa0e8 add beta
|
|
master 7eeab2e add alpha
|
|
* not-master 7eeab2e add alpha
|
|
|
|
$ echo % some more work on master from git
|
|
% some more work on master from git
|
|
$ git checkout master 2>&1 | sed s/\'/\"/g
|
|
Switched to branch "master"
|
|
$ echo delta > delta
|
|
$ git add delta
|
|
$ commit -m "add delta"
|
|
$ git checkout not-master 2>&1 | sed s/\'/\"/g
|
|
Switched to branch "not-master"
|
|
|
|
$ cd ..
|
|
|
|
$ cd hgrepo
|
|
$ echo % this should fail
|
|
% this should fail
|
|
$ hg push -r master
|
|
pushing to $TESTTMP/gitrepo
|
|
searching for changes
|
|
abort: refs/heads/master changed on the server, please pull and merge before pushing
|
|
[255]
|
|
|
|
$ echo % ... even with -f
|
|
% ... even with -f
|
|
$ hg push -fr master
|
|
pushing to $TESTTMP/gitrepo
|
|
searching for changes
|
|
abort: refs/heads/master changed on the server, please pull and merge before pushing
|
|
[255]
|
|
|
|
$ hg pull
|
|
pulling from $TESTTMP/gitrepo
|
|
importing git objects into hg
|
|
(run 'hg update' to get a working copy)
|
|
TODO shouldn't need to do this since we're (in theory) pushing master explicitly,
|
|
which should not implicitly also push the not-master ref.
|
|
$ hg book not-master -r default/not-master --force
|
|
$ echo % master and default/master should be diferent
|
|
% master and default/master should be diferent
|
|
$ hg log -r master | grep -v ': *master'
|
|
changeset: 2:72f56395749d
|
|
user: test
|
|
date: Mon Jan 01 00:00:12 2007 +0000
|
|
summary: add gamma
|
|
|
|
$ hg log -r default/master
|
|
changeset: 3:1436150b86c2
|
|
tag: default/master
|
|
tag: tip
|
|
parent: 0:3442585be8a6
|
|
user: test <test@example.org>
|
|
date: Mon Jan 01 00:00:13 2007 +0000
|
|
summary: add delta
|
|
|
|
|
|
$ echo % this should also fail
|
|
% this should also fail
|
|
$ hg push -r master
|
|
pushing to $TESTTMP/gitrepo
|
|
searching for changes
|
|
abort: pushing refs/heads/master overwrites 72f56395749d
|
|
[255]
|
|
|
|
$ echo % ... but succeed with -f
|
|
% ... but succeed with -f
|
|
$ hg push -fr master
|
|
pushing to $TESTTMP/gitrepo
|
|
searching for changes
|
|
default::refs/heads/master => GIT:cc119202
|
|
|
|
$ echo % this should fail, no changes to push
|
|
% this should fail, no changes to push
|
|
The exit code for this was broken in Mercurial (incorrectly returning 0) until
|
|
issue3228 was fixed in 2.1
|
|
$ hg push -r master && false
|
|
pushing to $TESTTMP/gitrepo
|
|
searching for changes
|
|
no changes found
|
|
[1]
|
|
|
|
$ cd ..
|