This file is indexed.

/usr/bin/svn-clean is in kdesdk-scripts 4:4.13.0-0ubuntu1.

This file is owned by root:root, with mode 0o755.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#! /usr/bin/env perl

#
# This script recursively (beginning with the current directory)
# wipes out everything not registered in SVN.
#
# rewritten in perl by Oswald Buddenhagen <ossi@kde.org>
#  based on bash version by Thiago Macieira <thiago@kde.org>
#   inspired by cvs-clean, written by Oswald Buddenhagen <ossi@kde.org>
#    inspired by the "old" cvs-clean target from Makefile.common
#
# This file is free software in terms of the BSD licence. That means
# that you can do anything with it except removing this license or
# the above copyright notice. There is NO WARRANTY of any kind.
#

# Warning:
# This script processes the output from the SVN executable
# Do not run it along with colorsvn

use File::Path;

my $version = "svn-clean v1.0";
my $heading = $version.": cleans up the Subversion working directory\n";
my $usage = $heading.
  "svn-clean [-h] [-n] [-q] [-i|-f] [dirname]\n\n".
  "Where:\n".
  "  -h      shows this help screen\n".
  "  -n      dry-run: doesn't actually erase the files, just show their names\n".
  "  -i      interactive: ask for confirmation before erasing the files\n".
  "  -f      force: doesn't ask for confirmation before erasing\n".
  "  -q      quiet: doesn't show output\n";


my $dry_run = 0;
my $force = 0;
my $quiet = 0;

sub check_confirm()
{
  return if ($force);

  open(TTY, "+< /dev/tty") or die "cannot open /dev/tty";

  print TTY "This will erase files and directories that aren't in Subversion\n".
            "Are you sure you want to continue? (y/n) ";
  
  if (<TTY> =~ /^[Yy]/) {
    $force = 1;
    close TTY;
    return;
  }
  
  # user cancelled
  exit 0;
}

# Parse arguments
my $rest = 0;
my @files = ();
foreach my $arg (@ARGV) {
  if ($rest) {
    push @files, $arg;
  } else {
    if ($arg eq '-h' || $arg eq '--help') {
      print $usage;
      exit (0);
    } elsif ($arg eq '-n' || $arg eq '--dry-run') {
      $dry_run = 1;
      $force = 1;
    } elsif ($arg eq '-f' || $arg eq '--force') {
      $force = 1;
    } elsif ($arg eq '-i' || $arg eq '--interactive') {
      $force = 0;
    } elsif ($arg eq '-q' || $arg eq '--quiet') {
      $quiet = 1;
    } elsif ($arg eq '--') {
      $rest = 1;
    } elsif ($arg =~ /^-/) {
      print STDERR "svn-clean: unknown argument '".$arg."'\n\n".$usage;
      exit (1);
    } else {
      push @files, $arg;
    }
  }
}
if (!@files) {
  push @files, '.';
}

# Unset TERM just so that no colours are output
# in case $SVN points to colorsvn
delete $ENV{'TERM'};

#print($heading."\n") unless $quiet;

foreach my $dir (@files) {
  open SVN, "-|", qw(svn status --no-ignore), $dir;
  while (<SVN>) {
    /^[I?] +(.*)$/ or next;
    my $file = $1;
    check_confirm();
    lstat $file;
    if (-d _) {
      print("D ".$file."\n") unless $quiet;
      rmtree($file, 0, 0) unless $dry_run;
    } else {
      print("F ".$file."\n") unless $quiet;
      unlink($file) unless $dry_run;
    }
  }
  close SVN;
}