summaryrefslogtreecommitdiff
path: root/util
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2012-01-07 02:16:37 -0800
committerGabe Black <gblack@eecs.umich.edu>2012-01-07 02:16:37 -0800
commit241cc0c8402f1b9f2ec20d1cc152d96930959b2a (patch)
tree666717370cc9db4775ef46c10f7d8a92a34f40e2 /util
parentec936364b7238cddea7734ea79c6e04b52a683c6 (diff)
parent4b772782871f265cf7372c984ad750803396938c (diff)
downloadgem5-241cc0c8402f1b9f2ec20d1cc152d96930959b2a.tar.xz
Another merge with the main repository.
Diffstat (limited to 'util')
-rw-r--r--util/hgfilesize.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/util/hgfilesize.py b/util/hgfilesize.py
new file mode 100644
index 000000000..8b9ad67ea
--- /dev/null
+++ b/util/hgfilesize.py
@@ -0,0 +1,32 @@
+from mercurial import context
+from mercurial.i18n import _
+
+'''
+[extensions]
+hgfilesize=~/m5/incoming/util/hgfilesize.py
+
+[hooks]
+pretxncommit = python:hgfilesize.limit_file_size
+pretxnchangegroup = python:hgfilesize.limit_file_size
+
+[limit_file_size]
+maximum_file_size = 200000
+'''
+
+def limit_file_size(ui, repo, node=None, **kwargs):
+ '''forbid files over a given size'''
+
+ # default limit is 1 MB
+ limit = int(ui.config('limit_file_size', 'maximum_file_size', 1024*1024))
+ existing_tip = context.changectx(repo, node).rev()
+ new_tip = context.changectx(repo, 'tip').rev()
+ for rev in xrange(existing_tip, new_tip + 1):
+ ctx = context.changectx(repo, rev)
+ for f in ctx.files():
+ fctx = ctx.filectx(f)
+ if fctx.size() > limit:
+ ui.write(_('file %s of %s is too large: %d > %d\n') % \
+ (f, ctx, fctx.size(), limit))
+ return True # This is invalid
+
+ return False # Things are OK.