Мне удалось найти все «рабочие копии SVN» в Win XP.
Я сделал это, используя скрипт PowerSell , предоставленный Алексеем Щербаком.
Вот краткое описание процесса с использованием метода PowerShell .
Проверьте, установлен ли PowerShell.
Windows PowerShell - это оболочка командной строки и среда сценариев, которая предоставляет возможности .NET Framework пользователям командной строки и разработчикам сценариев.
Проверьте, не установлено ли оно, попытавшись запустить его.
Чтобы запустить Windows PowerShell из поля «Выполнить», нажмите Пуск , нажмите Выполнить и введите:
powershell
Если это не сработает ...
Установите его
- Скачать Microsoft Windows PowerShell 1.0 для Windows XP с Cnet.com
- (PowerShell 2 для Windows XP также доступен, но я его не использовал. ( инструкции здесь ))
После установки ...
Запустите PowerShell и играйте
Пуск > Все программы > Windows PowerShell 1.0 > Windows PowerShell
См. Краткое введение в PowerShell на YouTube .
Создание сценария PowerShell
Скопируйте скрипт Алексея Щербака PowerSell * (который находит рабочие копии svn) в текстовый файл и сохраните его как-то вроде C:\PowerShellScripts\FindSvnWorkingDirectories.ps1
.
Я немного изменил его, чтобы выполнить поиск на диске C и подавить доступ запрещен ошибки:
$prev = "^$"
Get-ChildItem -ErrorAction SilentlyContinue -Recurse -Force -Include ".svn" -Path "c:\" `
| ?{$_.PSIsContainer -and $_.Fullname.StartsWith($prev)-eq $false}`
| %{ $prev=$_.Fullname.TrimEnd(".svn"); $prev}
Чтобы подробно объяснить, что делает этот скрипт:
$prev = "^$"
инициализирует $prev
регулярным выражением с пустым соответствием; ^$
никогда не будет соответствовать никакому значимому значению (кроме startline-endline). Это было необходимо для прохождения начальной проверки.
Get-ChildItem -ErrorAction SilentlyContinue -Recurse -Force -Include ".svn" -Path "c:\" `
Получает все объекты с именем ".svn" (в нашем случае - все файлы и папки с точным именем ".svn"), запущенные из Path, рекурсивно.
Get-ChildItem
по умолчанию является псевдонимом команды dir
.
-ErrorAction SilentlyContinue
- предотвращает отображение ошибок, таких как Доступ к пути «C: \ System Volume Information» запрещен , как описано здесь .
-Recurse
означает поиск рекурсивно.
-Force
обеспечивает поиск скрытых файлов.
-Include ".svn"
определяет имя файла, которое мы ищем.
-Path "c:\"
указывает путь к поиску.
- `Знак обратной черты означает продолжить оператор до следующей строки .
На следующей строке:
| ?{$_.PSIsContainer -and $_.Fullname.StartsWith($prev)-eq $false}`
Символ трубы, |
, передает вывод Get-ChildItem
в следующие командлеты.
?{...statements... }
- сокращение для командлета Where-Object
.
$_ is
способ адресации "каждой" записи из трубы. Он в основном говорит «Если запись является каталогом» и «полное имя не начинается со значения из $ prev», то «Передать запись в следующую конструкцию».
| %{ $prev=$_.Fullname.TrimEnd(".svn"); $prev}
Запись затем передается следующему оператору.
%{}
- сокращение от Foreach-Object
. Эта конструкция делает 2 вещи:
- Назначьте полное имя текущей папки
$prev
(без хвоста ".svn").
- Пропустить
$prev
до следующего трубопровода.
Разрешить PowerShell запускать скрипт
По умолчанию в целях безопасности PowerShell ExecutionPolicy
не позволяет запускать сценарии PowerShell. Итак, вам нужно разрешить это сделать.
Подробнее см. Запуск сценариев Windows PowerShell .
Я сделал следующее:
Примечание. Символ хеша (#) - это просто снимок для командной строки.
Определить текущий ExecutionPolicy
:
# Get-ExecutionPolicy
Restricted
Если, как и у меня, его ограничен . Измените политику, чтобы разрешить запуск сценария:
# Set-ExecutionPolicy RemoteSigned
Запустить сценарий PowerShell
Затем запустите скрипт, чтобы найти рабочие копии SVN. Обратите внимание, что вам необходимо указать полный путь к сценарию PowerShell.
# C:\PowerShellScripts\FindSvnWorkingDirectories.ps1
Если на ПК имеется множество каталогов, это может занять некоторое время. Результаты должны появиться.
Копирование и вставка результаты куда-то
Я сделал это, выбрав выходной текст с помощью мыши. Затем скопируйте его:
Щелкните значок PowerShell (в верхнем левом углу окна)>> 1181 * Редактировать > Копировать
Затем я вставил его в текстовый редактор.
Вернуть политику исключений PowerShell в исходное состояние
Поскольку я редко использую PowerShell и ослабил политику исключений только для запуска этого одноразового сценария, я собираюсь вернуть его обратно в исходное состояние для безопасности.
Определить текущий ExecutionPolicy
:
# Get-ExecutionPolicy
RemoteSigned
Измените политику, чтобы вернуть ее в исходное состояние:
# Set-ExecutionPolicy Restricted
Так вот как я это сделал.