common.py
51 lines
| 1.2 KiB
| text/x-python
|
PythonLexer
Pulkit Goyal
|
r37204 | # Copyright 2017 Facebook, Inc. | ||
# | ||||
# This software may be used and distributed according to the terms of the | ||||
# GNU General Public License version 2 or any later version. | ||||
import os | ||||
from mercurial.node import hex | ||||
from mercurial import ( | ||||
error, | ||||
extensions, | ||||
Yuya Nishihara
|
r38182 | pycompat, | ||
Pulkit Goyal
|
r37204 | ) | ||
Augie Fackler
|
r43346 | |||
Pulkit Goyal
|
r37204 | def isremotebooksenabled(ui): | ||
Augie Fackler
|
r43347 | return b'remotenames' in extensions._extensions and ui.configbool( | ||
b'remotenames', b'bookmarks' | ||||
Augie Fackler
|
r43346 | ) | ||
Pulkit Goyal
|
r37204 | |||
def downloadbundle(repo, unknownbinhead): | ||||
index = repo.bundlestore.index | ||||
store = repo.bundlestore.store | ||||
bundleid = index.getbundle(hex(unknownbinhead)) | ||||
if bundleid is None: | ||||
Augie Fackler
|
r43347 | raise error.Abort(b'%s head is not known' % hex(unknownbinhead)) | ||
Pulkit Goyal
|
r37204 | bundleraw = store.read(bundleid) | ||
return _makebundlefromraw(bundleraw) | ||||
Augie Fackler
|
r43346 | |||
Pulkit Goyal
|
r37204 | def _makebundlefromraw(data): | ||
fp = None | ||||
Yuya Nishihara
|
r38182 | fd, bundlefile = pycompat.mkstemp() | ||
Pulkit Goyal
|
r37204 | try: # guards bundlefile | ||
try: # guards fp | ||||
Augie Fackler
|
r43906 | fp = os.fdopen(fd, 'wb') | ||
Pulkit Goyal
|
r37204 | fp.write(data) | ||
finally: | ||||
fp.close() | ||||
except Exception: | ||||
try: | ||||
os.unlink(bundlefile) | ||||
except Exception: | ||||
# we would rather see the original exception | ||||
pass | ||||
raise | ||||
return bundlefile | ||||