sapling/eden/scm/tests/test-hggit-push.t
Durham Goode 1183f14f11 treemanifest: disable flatcompat by default
Summary:
This was a hack to allow the tests to produce the same hashes as
before. Let's disable this and fix the remaining test failures. A future diff
will remove the feature entirely.

Where possible I changed input hashes to desc() and output hashes to globs so
hopefully future hash changes are a little easier.

Differential Revision: D29567762

fbshipit-source-id: cf5150c112c56b08f583feba80e5a636cc07db0a
2021-07-13 15:04:57 -07:00

197 lines
5.4 KiB
Perl

Load commonly used test logic
$ . "$TESTDIR/hggit/testutil"
$ git init -q gitrepo
$ cd gitrepo
$ echo alpha > alpha
$ git add alpha
$ fn_git_commit -m "add alpha"
$ git checkout -b not-master
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
$ hg bookmark -q master
$ echo beta > beta
$ hg add beta
$ fn_hg_commit -m 'add beta'
$ echo gamma > gamma
$ hg add gamma
$ fn_hg_commit -m 'add gamma'
$ hg book -r 574e2d660a7d7bbaf97251f694c8c8327f0db957 beta
$ hg push -r beta
pushing to $TESTTMP/gitrepo
searching for changes
adding objects
added 1 commits with 1 trees and 1 blobs
adding reference refs/heads/beta
$ cd ..
should have two different branches
$ cd gitrepo
$ git branch -v
beta 0f378ab add beta
master 7eeab2e add alpha
* not-master 7eeab2e add alpha
some more work on master from git
$ git checkout master
Switched to branch 'master'
$ echo delta > delta
$ git add delta
$ fn_git_commit -m "add delta"
$ git checkout not-master
Switched to branch 'not-master'
$ cd ..
$ cd hgrepo
this should fail
$ hg push -r master
pushing to $TESTTMP/gitrepo
searching for changes
abort: branch 'refs/heads/master' changed on the server, please pull and merge before pushing
[255]
... even with -f
$ hg push -fr master
pushing to $TESTTMP/gitrepo
searching for changes
abort: branch 'refs/heads/master' changed on the server, please pull and merge before pushing
[255]
$ hg pull 2>&1 | grep -v 'divergent bookmark'
pulling from $TESTTMP/gitrepo
importing git objects into hg
this should also fail
$ hg push -r master
pushing to $TESTTMP/gitrepo
searching for changes
abort: pushing refs/heads/master overwrites 49480a0fbf45
[255]
... but succeed with -f
$ hg push -fr master
pushing to $TESTTMP/gitrepo
searching for changes
adding objects
added 1 commits with 1 trees and 1 blobs
updating reference refs/heads/master
this should fail, no changes to push
$ hg push -r master
pushing to $TESTTMP/gitrepo
searching for changes
no changes found
[1]
hg-git issue103 -- directories can lose information at hg-git export time
$ hg up master | egrep -v '^\(activating bookmark master\)$'
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ mkdir dir1
$ echo alpha > dir1/alpha
$ hg add dir1/alpha
$ fn_hg_commit -m 'add dir1/alpha'
$ hg push -r master
pushing to $TESTTMP/gitrepo
searching for changes
adding objects
added 1 commits with 2 trees and 0 blobs
updating reference refs/heads/master
$ echo beta > dir1/beta
$ hg add dir1/beta
$ fn_hg_commit -m 'add dir1/beta'
$ hg push -r master
pushing to $TESTTMP/gitrepo
searching for changes
adding objects
added 1 commits with 2 trees and 0 blobs
updating reference refs/heads/master
$ hg log -r master
commit: * (glob)
bookmark: master
user: test
date: Mon Jan 01 00:00:15 2007 +0000
summary: add dir1/beta
$ cd ..
$ hg clone gitrepo hgrepo-test
importing git objects into hg
updating to branch default
5 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg -R hgrepo-test log -r master
commit: * (glob)
bookmark: master
user: test
date: Mon Jan 01 00:00:15 2007 +0000
summary: add dir1/beta
Push empty Hg repo to empty Git repo (issue #58)
$ hg init hgrepo2
$ git init -q --bare gitrepo2
$ hg -R hgrepo2 push gitrepo2
pushing to gitrepo2
searching for changes
no changes found
[1]
The remote repo is empty and the local one doesn't have any bookmarks/tags
$ cd hgrepo2
$ echo init >> test.txt
$ hg addremove
adding test.txt
$ fn_hg_commit -m init
$ hg update null
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg push ../gitrepo2
pushing to ../gitrepo2
searching for changes
adding objects
added 1 commits with 1 trees and 1 blobs
(the phases line was added in Mercurial 3.5)
$ hg summary | grep -Ev '^phases:'
parent: 000000000000 (no revision checked out)
commit: (clean)
Only one bookmark 'master' should be created
$ hg bookmarks
* master 8aded40be5af
test for ssh vulnerability
$ cat >> $HGRCPATH << EOF
> [ui]
> ssh = ssh -o ConnectTimeout=1
> EOF
$ hg push 'git+ssh://-oProxyCommand=rm${IFS}nonexistent/path' 2>&1 >/dev/null
pushing to git+ssh://-oProxyCommand%3Drm%24%7BIFS%7Dnonexistent/path
abort: potentially unsafe hostname: '-oProxyCommand=rm${IFS}nonexistent'
[255]
$ hg push 'git+ssh://-oProxyCommand=rm%20nonexistent/path' 2>&1 >/dev/null
pushing to git+ssh://-oProxyCommand%3Drm%20nonexistent/path
abort: potentially unsafe hostname: '-oProxyCommand=rm nonexistent'
[255]
$ hg push 'git+ssh://fakehost|rm%20nonexistent/path' 2>&1 >/dev/null
pushing to git+ssh://fakehost%7Crm%20nonexistent/path
ssh: .* fakehost%7[Cc]rm%20nonexistent.* (re)
abort: git remote error: The remote server unexpectedly closed the connection.
[255]
$ hg push 'git+ssh://fakehost%7Crm%20nonexistent/path' 2>&1 >/dev/null
pushing to git+ssh://fakehost%7Crm%20nonexistent/path
ssh: .* fakehost%7[Cc]rm%20nonexistent.* (re)
abort: git remote error: The remote server unexpectedly closed the connection.
[255]