checkout: ignore 'U'pdate line, show number of files/directories checked out

This commit is contained in:
Josh Holtrop 2018-02-24 20:51:04 -05:00
parent 0a1ddbfd3f
commit 8a795ce265

View File

@ -9,6 +9,7 @@ module Svi
def checkout(url) def checkout(url)
last_checkout_message = "" last_checkout_message = ""
checked_out_paths = []
clear_message = lambda do clear_message = lambda do
if last_checkout_message.size > 0 if last_checkout_message.size > 0
clear = "" clear = ""
@ -25,10 +26,26 @@ module Svi
SvnRunner.run_svn("checkout", [url], allow_interactive: true) do |line| SvnRunner.run_svn("checkout", [url], allow_interactive: true) do |line|
if line =~ /^A.{4}(.*)$/ if line =~ /^A.{4}(.*)$/
path = $1 path = $1
checked_out_paths << path
clear_message[] clear_message[]
last_checkout_message = "Checking out #{path}..." last_checkout_message = "Checking out #{path}..."
$stdout.write(last_checkout_message) $stdout.write(last_checkout_message)
$stdout.flush $stdout.flush
elsif line =~ /^\sU\s{3}/
# Ignore the 'U'pdate line of the checkout directory itself.
elsif line =~ /^Checked out revision (\d+)/
revision = $1
clear_message[]
n_files = 0
n_directories = 0
checked_out_paths.uniq.each do |path|
if File.directory?(path)
n_directories += 1
else
n_files += 1
end
end
$stdout.puts "Checked out revision #{revision}: #{n_files} file#{n_files == 1 ? '' : 's'}, #{n_directories} director#{n_directories == 1 ? 'y' : 'ies'}"
else else
clear_message[] clear_message[]
$stdout.puts line $stdout.puts line