mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 16:57:49 +03:00
fb9384235f
While working on some other tests, I noticed that the push command was returning exit code 1 on success. This changeset makes hgrepo.push use the same return code contract as localrepo.push, which makes the exit codes behave as expected.
121 lines
2.8 KiB
Bash
Executable File
121 lines
2.8 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# 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
|
|
|
|
# bail early if the user is already running git-daemon
|
|
echo hi | nc localhost 9418 2>/dev/null && exit 80
|
|
|
|
echo "[extensions]" >> $HGRCPATH
|
|
echo "hggit=$(echo $(dirname $(dirname $0)))/hggit" >> $HGRCPATH
|
|
echo 'hgext.graphlog =' >> $HGRCPATH
|
|
echo 'hgext.bookmarks =' >> $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 | python -c "import sys; print sys.stdin.read().replace('$(dirname $(pwd))/', '')"
|
|
|
|
echo alpha > alpha
|
|
git add alpha
|
|
commit -m "add alpha"
|
|
git checkout -b not-master 2>&1 | sed s/\'/\"/g
|
|
|
|
# dulwich does not presently support local git repos, workaround
|
|
cd ..
|
|
git daemon --base-path="$(pwd)"\
|
|
--listen=localhost\
|
|
--export-all\
|
|
--pid-file="$DAEMON_PIDS" \
|
|
--detach --reuseaddr \
|
|
--enable=receive-pack
|
|
|
|
hg clone git://localhost/gitrepo hgrepo | grep -v '^updating'
|
|
|
|
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
|
|
echo [$?]
|
|
|
|
cd ..
|
|
|
|
echo % should have two different branches
|
|
cd gitrepo
|
|
git branch -v
|
|
|
|
echo % some more work on master from git
|
|
git checkout master 2>&1 | sed s/\'/\"/g
|
|
echo delta > delta
|
|
git add delta
|
|
commit -m "add delta"
|
|
git checkout not-master 2>&1 | sed s/\'/\"/g
|
|
|
|
cd ..
|
|
|
|
cd hgrepo
|
|
echo % this should fail
|
|
hg push -r master
|
|
echo [$?]
|
|
|
|
echo % ... even with -f
|
|
hg push -fr master
|
|
echo [$?]
|
|
|
|
hg pull
|
|
# 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
|
|
hg log -r master | grep -v ': *master'
|
|
hg log -r default/master
|
|
|
|
echo % this should also fail
|
|
hg push -r master
|
|
echo [$?]
|
|
|
|
echo % ... but succeed with -f
|
|
hg push -fr master
|
|
echo [$?]
|
|
|
|
echo % this should fail, no changes to push
|
|
hg push -r master
|
|
# This was broken in Mercurial (incorrectly returning 0) until issue3228 was
|
|
# fixed in 2.1
|
|
echo [$?] | sed s/0/1/
|
|
|
|
cd ..
|