diff options
author | Gabe Black <gblack@eecs.umich.edu> | 2012-01-07 02:16:37 -0800 |
---|---|---|
committer | Gabe Black <gblack@eecs.umich.edu> | 2012-01-07 02:16:37 -0800 |
commit | 241cc0c8402f1b9f2ec20d1cc152d96930959b2a (patch) | |
tree | 666717370cc9db4775ef46c10f7d8a92a34f40e2 /util | |
parent | ec936364b7238cddea7734ea79c6e04b52a683c6 (diff) | |
parent | 4b772782871f265cf7372c984ad750803396938c (diff) | |
download | gem5-241cc0c8402f1b9f2ec20d1cc152d96930959b2a.tar.xz |
Another merge with the main repository.
Diffstat (limited to 'util')
-rw-r--r-- | util/hgfilesize.py | 32 |
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. |