infinitepush: backout lfs fix

Summary: This broke hg bundle on non-generaldelta repositories.

Test Plan: Ran the tests

Reviewers: #fbhgext, stash, quark

Reviewed By: #fbhgext, quark

Differential Revision: https://phab.mercurial-scm.org/D74
This commit is contained in:
Durham Goode 2017-07-13 13:53:40 -07:00
parent 370ce5b5ff
commit 3102e456ab
6 changed files with 9 additions and 103 deletions

View File

@ -179,16 +179,6 @@ def _canskipupload(repo):
# if remotestore is a null store, upload is a no-op and can be skipped
return isinstance(repo.svfs.lfsremoteblobstore, blobstore._nullremote)
def uploadblobsfromrevs(repo, revs):
'''upload lfs blobs introduced by revs
Note: also used by other extensions e. g. infinitepush. avoid renaming.
'''
if _canskipupload(repo):
return
pointers = extractpointers(repo, revs)
uploadblobs(repo, pointers)
def prepush(pushop):
"""Prepush hook.
@ -196,12 +186,18 @@ def prepush(pushop):
deserialized into metadata so that we can block the push on their upload to
the remote blobstore.
"""
return uploadblobsfromrevs(pushop.repo, pushop.outgoing.missing)
if _canskipupload(pushop.repo):
return
pointers = extractpointers(pushop.repo, pushop.outgoing.missing)
uploadblobs(pushop.repo, pointers)
def writenewbundle(orig, ui, repo, source, filename, bundletype, outgoing,
*args, **kwargs):
"""upload LFS blobs added by outgoing revisions on 'hg bundle'"""
uploadblobsfromrevs(repo, outgoing.missing)
if _canskipupload(repo):
return
pointers = extractpointers(repo, outgoing.missing)
uploadblobs(repo, pointers)
return orig(ui, repo, source, filename, bundletype, outgoing, *args,
**kwargs)

View File

@ -286,13 +286,6 @@ def clientextsetup(ui):
wrapfunction(discovery, 'checkheads', _checkheads)
def infinitepushsupported(orig, repo):
versions = orig(repo)
versions.discard('01')
return versions
wrapfunction(changegroup, 'supportedoutgoingversions',
infinitepushsupported)
wireproto.wirepeer.listkeyspatterns = listkeyspatterns
# Move infinitepush part before pushrebase part

View File

@ -11,7 +11,6 @@ from mercurial import (
bundle2,
changegroup,
error,
extensions,
revsetlang,
)
from mercurial.i18n import _
@ -30,8 +29,7 @@ def getscratchbranchpart(repo, peer, outgoing, confignonforwardmove,
_validaterevset(repo, revsetlang.formatspec('%ln', outgoing.missing),
bookmark)
cgversion = changegroup.safeversion(repo)
_handlelfs(repo, outgoing.missing)
cgversion = '02'
cg = changegroup.getlocalchangegroupraw(repo, 'push',
outgoing, version=cgversion)
@ -79,16 +77,3 @@ def _validaterevset(repo, revset, bookmark):
if len(heads) > 1:
raise error.Abort(
_('cannot push more than one head to a scratch branch'))
def _handlelfs(repo, missing):
'''Special case if lfs is enabled
If lfs is enabled then we need to call prepush hook
to make sure large files are uploaded to lfs
'''
try:
lfsmod = extensions.find('lfs')
lfsmod.wrapper.uploadblobsfromrevs(repo, missing)
except KeyError:
# Ignore if lfs extension is not enabled
return

View File

@ -40,8 +40,6 @@ infinitepush=$TESTDIR/../infinitepush
[infinitepush]
branchpattern=re:scratch/.+
server=False
[experimental]
changegroup3=True
[paths]
default = ssh://user@dummy/server
EOF
@ -49,8 +47,6 @@ EOF
setupsqlserverhgrc() {
cat << EOF > .hg/hgrc
[experimental]
changegroup3=True
[ui]
ssh=python "$TESTDIR/dummyssh"
[extensions]

View File

@ -1,63 +0,0 @@
Setup common infinitepush
$ . "$TESTDIR/library.sh"
$ . "$TESTDIR/library-infinitepush.sh"
$ setupcommon
Setup lfs
$ cat >> $HGRCPATH << EOF
> [experimental]
> changegroup3=True
> [extensions]
> lfs=$TESTDIR/../hgext3rd/lfs/
> [lfs]
> threshold=10B
> url=file:$TESTTMP/dummy-remote/
> EOF
Setup server repo
$ hg init repo
$ cd repo
$ setupserver
$ echo 1 > 1
$ hg add 1
$ hg ci -m initial
Setup client
$ cd ..
$ hg clone ssh://user@dummy/repo client -q
$ cd client
$ echo aaaaaaaaaaa > largefile
$ hg ci -Aqm commit
$ hg debugdata largefile 0
version https://git-lfs.github.com/spec/v1
oid sha256:ab483e1d855ad0ea27a68eeea02a04c1de6ccd2dc2c05e3a48c9a1ebb8af5f99
size 12
x-is-binary 0
$ hg push -r . --to scratch/lfscommit --create
pushing to ssh://user@dummy/repo
searching for changes
remote: pushing 1 commit:
remote: 0da81a72db1a commit
$ scratchbookmarks
scratch/lfscommit 0da81a72db1a2d8256845e3808971f33e73d24c4
$ cd ..
Setup another client
$ hg clone ssh://user@dummy/repo client2 -q
$ cd client2
$ hg update scratch/lfscommit
'scratch/lfscommit' does not exist locally - looking for it remotely...
pulling from ssh://user@dummy/repo
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
(run 'hg update' to get a working copy)
'scratch/lfscommit' found remotely
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(activating bookmark scratch/lfscommit)

View File

@ -1,5 +1,4 @@
$ . $TESTDIR/require-ext.sh remotenames
$ . "$TESTDIR/library.sh"
$ cat >> $HGRCPATH << EOF
> [extensions]
> infinitepush=$TESTDIR/../infinitepush