Skip to content

Instantly share code, notes, and snippets.

@netfeed
Created September 29, 2010 07:52
Show Gist options
  • Save netfeed/602434 to your computer and use it in GitHub Desktop.
Save netfeed/602434 to your computer and use it in GitHub Desktop.
#!/usr/bin/env ruby -w
# simple script to count row changes in a svn repo
def status dir=''
files = []
svn = `svn status #{dir}`
svn.split("\n").each do |line|
next if line =~ /^[^A-Z]/
line =~ /^[A-Z]\s+.*\s+(.+)$/
files << $1
end
files
end
files = []
silent = false;
if ARGV.first == '-s'
silent = true
ARGV.delete_at 0
end
unless ARGV.empty?
ARGV.each do |file|
if File::directory? file
files += status file
else
files << file
end
end
else
files += status
end
added = 0
removed = 0
done = [];
files.each do |file|
next if done.include? file
next if File.directory? file
plus, minus = 0, 0
diff = `svn diff --diff-cmd diff #{file}`
diff.split("\n").each do |line|
next unless line =~ /^(\+|\-)/
plus += 1 if line =~ /^\+[^\+\-]/
minus += 1 if line =~ /^\-[^\+\-]/
end
unless silent
puts "%s:" % [file]
puts " Lines added: #{plus}"
puts " Lines removed: #{minus}"
end
added += plus
removed += minus
done << file
end
puts unless silent
puts "Total:"
puts " Lines added: #{added}"
puts " Lines removed: #{removed}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment