Извлечение определенного значения из вывода командной строки с использованием powershell - PullRequest
3 голосов
/ 14 января 2011

Вот проблема: я хочу запросить Subversion для номера ревизии хранилища, а затем создать новый каталог с номером ревизии в его имени (например, «Build763»).«svn info» выводит количество пар метка \ значение, разделенных двоеточиями.Например

Path: c#
URL: file:///%5Copdy-doo/Archive%20(H)/Development/CodeRepositories/datmedia/Development/c%23
Repository UUID: b1d03fca-1949-a747-a1a0-046c2429f46a
Revision: 58
Last Changed Rev: 58
Last Changed Date: 2011-01-12 11:36:12 +1000 (Wed, 12 Jan 2011)

Вот мой текущий код, который решает проблему.Есть ли способ сделать это с меньшим количеством кода?Я думаю, что с использованием труб вы можете сделать это с одной или двумя линиями.Я, конечно, не должен был использовать временный файл.

$RepositoryRoot = "file:///%5Cdat-ftp/Archive%20(H)/Development/CodeRepositories/datmedia"
$BuildBase="/Development/c%23"
$RepositoryPath=$RepositoryRoot + $BuildBase

# Outputing the info into a file
svn info $RepositoryPath | Out-File -FilePath svn_info.txt

$regex = [regex] '^Revision: (\d{1,4})'

foreach($info_line in get-content "svn_info.txt")
    {
        $match = $regex.Match($info_line);
        if($match.Success)
        {
            $revisionNumber = $match.Groups[1];
            break;
        }
    }


"Revision number = " + $revisionNumber;

Ответы [ 4 ]

3 голосов
/ 14 января 2011

Вот один из способов:

    $revisionNumber = svn info $RepositoryPath |
     select-string "^revision" |
      foreach {$_.line.split(":")[1].trim()}

    if ($revisionNumber){"Revision number = " + $revisionNumber

}
2 голосов
/ 15 января 2011

Что бы это ни стоило, вы можете использовать ConvertFrom-Property String

2 голосов
/ 14 января 2011

Принимая предложение Мьолинора, я наконец-то скажу:

$revisionNumber = (svn info $RepositoryPath | select-string '^Revision: (\d+)$').Matches[0].Groups[1].Value

Cool! Одна строка кода. (Письмо заняло два часа, но эй)

0 голосов
/ 22 декабря 2012

Если вы можете создать и использовать рабочую копию URL (WC), вы можете

  • svnversion WC: вывести чистый номер ревизии WC

    > svnversion trunk

    34

  • С SubWCRrev преобразовать файл-шаблон с SubWCRrev-Keywords в bat-файл (subwcrev WC tpl-file bat-file) с RevNo, замененным в нужном месте (внутри параметров mkdir) и вызовом result bat для выполнения операции
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...