From patchwork Thu Sep 11 00:26:14 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [13, of, 21, RFC] merge: linear updates to censored data revisions produce empty files From: michaeljedgar@gmail.com X-Patchwork-Id: 5788 Message-Id: <4004f1fed45d6ea2a882.1410395174@adgar-macbookpro3.roam.corp.google.com> To: mercurial-devel@selenic.com Date: Wed, 10 Sep 2014 20:26:14 -0400 # HG changeset patch # User Mike Edgar # Date 1410322526 14400 # Wed Sep 10 00:15:26 2014 -0400 # Node ID 4004f1fed45d6ea2a88272895a5e12ccf28cad0c # Parent c81c9a42fb6f1b2f402e4e6607fe2a531469b08e merge: linear updates to censored data revisions produce empty files The same configuration check done in verify is done in update to determine if the update should be rejected or should substitute the empty file. diff -r c81c9a42fb6f -r 4004f1fed45d mercurial/merge.py --- a/mercurial/merge.py Wed Sep 10 00:17:54 2014 -0400 +++ b/mercurial/merge.py Wed Sep 10 00:15:26 2014 -0400 @@ -7,10 +7,11 @@ import struct -from node import nullid, nullrev, hex, bin +from node import nullid, nullrev, hex, bin, short from i18n import _ from mercurial import obsolete import error as errormod, util, filemerge, copies, subrepo, worker, dicthelpers +import censor import errno, os, shutil _pack = struct.pack @@ -597,7 +598,15 @@ repo.ui.debug(" %s: %s -> g\n" % (f, msg)) if verbose: repo.ui.note(_("getting %s\n") % f) - wwrite(f, fctx(f).data(), args[0]) + try: + data = fctx(f).data() + except errormod.CensoredNodeError, e: + if not censor.allowed(repo, f, e.node): + raise util.Abort(_('file %s censored at revision %s') + % (f, short(mctx.node()))) + repo.ui.warn(_('warning: censored file is empty: %s\n') % f) + data = '' + wwrite(f, data, args[0]) if i == 100: yield i, f i = 0