hgfilesize.py revision 8652:104bd212ae41
11689SN/Afrom mercurial import context 29444SAndreas.Sandberg@ARM.comfrom mercurial.i18n import _ 39920Syasuko.eckert@amd.com 47944SGiacomo.Gabrielli@arm.com''' 57944SGiacomo.Gabrielli@arm.com[extensions] 67944SGiacomo.Gabrielli@arm.comhgfilesize=~/m5/incoming/util/hgfilesize.py 77944SGiacomo.Gabrielli@arm.com 87944SGiacomo.Gabrielli@arm.com[hooks] 97944SGiacomo.Gabrielli@arm.compretxncommit = python:hgfilesize.limit_file_size 107944SGiacomo.Gabrielli@arm.compretxnchangegroup = python:hgfilesize.limit_file_size 117944SGiacomo.Gabrielli@arm.com 127944SGiacomo.Gabrielli@arm.com[limit_file_size] 137944SGiacomo.Gabrielli@arm.commaximum_file_size = 200000 147944SGiacomo.Gabrielli@arm.com''' 152326SN/A 161689SN/Adef limit_file_size(ui, repo, node=None, **kwargs): 171689SN/A '''forbid files over a given size''' 181689SN/A 191689SN/A # default limit is 1 MB 201689SN/A limit = int(ui.config('limit_file_size', 'maximum_file_size', 1024*1024)) 211689SN/A existing_tip = context.changectx(repo, node).rev() 221689SN/A new_tip = context.changectx(repo, 'tip').rev() 231689SN/A for rev in xrange(existing_tip, new_tip + 1): 241689SN/A ctx = context.changectx(repo, rev) 251689SN/A for f in ctx.files(): 261689SN/A fctx = ctx.filectx(f) 271689SN/A if fctx.size() > limit: 281689SN/A ui.write(_('file %s of %s is too large: %d > %d\n') % \ 291689SN/A (f, ctx, fctx.size(), limit)) 301689SN/A return True # This is invalid 311689SN/A 321689SN/A return False # Things are OK. 331689SN/A