From patchwork Sat Jan 2 11:25:10 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [6,of,7,checkunknown] batchget: add support for backing up files From: Siddharth Agarwal X-Patchwork-Id: 12474 Message-Id: To: Date: Sat, 2 Jan 2016 03:25:10 -0800 # HG changeset patch # User Siddharth Agarwal # Date 1451733661 28800 # Sat Jan 02 03:21:01 2016 -0800 # Node ID d2b847835e055f08e538ecf3ad336b7a1cb57e30 # Parent c1ad84b3d9c0cc4c80e8df426dc9d8bf4c4fc488 # Available At http://42.netv6.net/sid0-wip/hg/ # hg pull http://42.netv6.net/sid0-wip/hg/ -r d2b847835e05 batchget: add support for backing up files We're going to use this in an upcoming feature. diff --git a/mercurial/merge.py b/mercurial/merge.py --- a/mercurial/merge.py +++ b/mercurial/merge.py @@ -971,11 +971,26 @@ def batchget(repo, mctx, actions): verbose = repo.ui.verbose fctx = mctx.filectx wwrite = repo.wwrite + ui = repo.ui i = 0 for f, args, msg in actions: repo.ui.debug(" %s: %s -> g\n" % (f, msg)) if verbose: repo.ui.note(_("getting %s\n") % f) + + if args[1]: # backup + absf = repo.wjoin(f) + orig = scmutil.origpath(ui, repo, absf) + try: + # TODO Mercurial has always aborted if an untracked directory + # is replaced by a tracked file, or generally with + # file/directory merges. This needs to be sorted out. + if repo.wvfs.isfileorlink(f): + util.rename(absf, orig) + except OSError as e: + if e.errno != errno.ENOENT: + raise + wwrite(f, fctx(f).data(), args[0]) if i == 100: yield i, f