Index: extra/svn/reposman.rb =================================================================== --- extra/svn/reposman.rb (revision 2924) +++ extra/svn/reposman.rb (working copy) @@ -73,6 +73,7 @@ ['--scm', GetoptLong::REQUIRED_ARGUMENT], ['--test', '-t', GetoptLong::NO_ARGUMENT], ['--force', '-f', GetoptLong::NO_ARGUMENT], + ['--delete', '-d', GetoptLong::NO_ARGUMENT], ['--verbose', '-v', GetoptLong::NO_ARGUMENT], ['--version', '-V', GetoptLong::NO_ARGUMENT], ['--help' , '-h', GetoptLong::NO_ARGUMENT], @@ -88,6 +89,7 @@ $svn_url = false $test = false $force = false +$delete = false $scm = 'Subversion' def log(text, options={}) @@ -132,6 +134,7 @@ when '--verbose'; $verbose += 1 when '--test'; $test = true when '--force'; $force = true + when '--delete'; $delete = true when '--version'; puts Version; exit when '--help'; RDoc::usage when '--quiet'; $quiet = true @@ -209,6 +212,31 @@ Etc.getpwuid( File.stat(file).uid ).name end +if $delete == true + log("checking for svn directories to delete", :level => 1) + svnprojects = Dir.glob("#{$repos_base}/*/") + svnprojects.each do |svnproject| + matches = svnproject.match(/\/([a-z0-9-]+)\/$/) + svnname = matches[1] + + if svnname.match(/^\./) + next + end + + $found = false + projects.each do |project| + if project.identifier.match(svnname) + $found = true + end + end + + if $found == false + log("\tdeleting svn project #{svnproject} as it doesn't exist in redmine anymore") + FileUtils.rm_r(svnproject) + end + end +end + projects.each do |project| log("treating project #{project.name}", :level => 1)