Почему этот скрипт PowerShell удаляет svn: mergeinfo из корневого каталога? - PullRequest
3 голосов
/ 28 октября 2010

У нас есть скрипт для удаления свойства svn: mergeinfo из всех папок внутри рабочей копии Subversion, но не из самого корневого каталога рабочей копии.В настоящее время это скрипт сборки NAnt, вызываемый из отдельного командного файла, поэтому я пытаюсь заменить его более простым скриптом PowerShell.У меня было три попытки, начиная от наивного до чуть более изощренного.Все три не соответствуют моим критериям, выводя строку property 'svn:mergeinfo' deleted from '.'.

Проверка свойств SVN корневого каталога рабочей копии указывает на то, что свойство svn: mergeinfo действительно удалено из этой папки, а это не то, что мне нужно.Каждая версия предназначена для запуска из корня рабочей копии.

Попытка 1:

# I understand why this one fails, it's a poor attempt.
Get-ChildItem -Recurse | svn propdel svn:mergeinfo -R $_

Попытка 2:

# This one correctly lists everything except the working copy root, but
# still removes the svn:mergeinfo property from the working copy root.
Get-ChildItem -Recurse -Exclude $pwd | svn propdel svn:mergeinfo -R $_

Попытка 3:

# Again, this one works fine until the svn propdel is added.
Get-ChildItem | ForEach-Object { ls -R $_ } | svn propdel svn:mergeinfo -R $_

Есть мысли о недостатке моей логики?

1 Ответ

3 голосов
/ 28 октября 2010

svn является внешним приложением, и вы не можете напрямую использовать технику трубопровода PowerShell. Я не знаком с синтаксисом svn и могу ошибаться в деталях, но все ваши команды предположительно должны использовать ForEach-Object (%). То есть:

... | %{ svn propdel svn:mergeinfo -R $_ }

Тогда svn должен «понять» $_ правильно. Также вполне возможно, что вы должны использовать что-то вроде $_.FullName или $_.Name вместо $_ (опять же, потому что svn является внешним приложением и ожидает строку (например, $_.FullName / $_.Name) , а не объект $_). Примечание: $_ часто автоматически преобразуется в строки, как и ожидалось, но это не всегда так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...