Permalink
Browse files

add `git big-file`

  • Loading branch information...
mislav committed Oct 30, 2011
1 parent 9147257 commit 7a79cbfde312eb3cc77f9414417caf91ebb16619
Showing with 27 additions and 0 deletions.
  1. +27 −0 bin/git-big-file
View
@@ -0,0 +1,27 @@
+#!/usr/bin/env ruby -w
+## Usage: git big-file [HEAD [treshold]]
+#
+# Treshold is in MB (default: 0.1)
+
+head, treshold = ARGV
+head ||= 'HEAD'
+Megabyte = 1000 ** 2
+treshold = (treshold || 0.1).to_f * Megabyte
+
+big_files = {}
+
+IO.popen("git rev-list #{head}", 'r') do |rev_list|
+ rev_list.each_line do |commit|
+ commit.chomp!
+ for object in `git ls-tree -zrl #{commit}`.split("\0")
+ bits, type, sha, size, path = object.split(/\s+/, 5)
+ size = size.to_i
+ big_files[sha] = [path, size, commit] if size >= treshold
+ end
+ end
+end
+
+big_files.each do |sha, (path, size, commit)|
+ where = `git show -s #{commit} --format='%h: %cr'`.chomp
+ puts "%4.1fM\t%s\t(%s)" % [size.to_f / Megabyte, path, where]
+end

0 comments on commit 7a79cbf

Please sign in to comment.