Mercurial > hg
changeset 23530:42ae1b1f048f
largefiles: start by finding files of interest
Instead of iterating over 'g' action, first find the set of all files
that are largefiles in p1. Then iterate over these files. This
prepares for considering actions other than 'g'.
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Tue, 09 Dec 2014 22:10:51 -0800 |
parents | 38e55e55ae4d |
children | 416c133145ee |
files | hgext/largefiles/overrides.py |
diffstat | 1 files changed, 12 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/largefiles/overrides.py Tue Dec 09 22:03:53 2014 -0800 +++ b/hgext/largefiles/overrides.py Tue Dec 09 22:10:51 2014 -0800 @@ -426,22 +426,24 @@ return actions, diverge, renamedelete # Convert to dictionary with filename as key and action as value. + lfiles = set() actionbyfile = {} for m, l in actions.iteritems(): for f, args, msg in l: actionbyfile[f] = m, args, msg - - removes = set(a[0] for a in actions['r']) + splitstandin = f and lfutil.splitstandin(f) + if splitstandin in p1: + lfiles.add(splitstandin) + elif lfutil.standin(f) in p1: + lfiles.add(f) - for action in actions['g']: - f, args, msg = action - splitstandin = f and lfutil.splitstandin(f) - if (splitstandin is not None and - splitstandin in p1 and splitstandin not in removes): + for lfile in lfiles: + standin = lfutil.standin(lfile) + lm = actionbyfile.get(lfile, (None, None, None))[0] + sm = actionbyfile.get(standin, (None, None, None))[0] + if sm == 'g' and lm != 'r': # Case 1: normal file in the working copy, largefile in # the second parent - lfile = splitstandin - standin = f usermsg = _('remote turned local normal file %s into a largefile\n' 'use (l)argefile or keep (n)ormal file?' '$$ &Largefile $$ &Normal file') % lfile @@ -454,11 +456,9 @@ else: actionbyfile[standin] = ('r', None, 'replaced by non-standin') - elif lfutil.standin(f) in p1 and lfutil.standin(f) not in removes: + elif lm == 'g' and sm != 'r': # Case 2: largefile in the working copy, normal file in # the second parent - standin = lfutil.standin(f) - lfile = f usermsg = _('remote turned local largefile %s into a normal file\n' 'keep (l)argefile or use (n)ormal file?' '$$ &Largefile $$ &Normal file') % lfile