Как получить доступ к информации о файле в хуке предварительной фиксации, используя SharpSVN - PullRequest
2 голосов
/ 16 января 2010

Я новичок в SharpSVN и SVN в целом. Я пытаюсь реализовать ловушку предварительной фиксации, когда пользователь фиксирует определенный тип файла XML; Мне нужно перехватить файл и проанализировать его, чтобы убедиться, что в него включены определенные элементы, прежде чем я разрешу файл зафиксировать.

Поскольку кажется, что SVN представляет два аргумента; путь к хранилищу и транзакция; Мне нужно будет использовать эти два элемента для перехвата файла. Кто-нибудь знает, что мне нужно использовать в SharpSVN для получения информации о файле на основе этих двух параметров?

Спасибо, Блошиный #

1 Ответ

4 голосов
/ 16 января 2010

Вы можете сделать это с помощью встроенного SvnLookClient.

Чтобы использовать это, прежде всего вам нужен SvnLookOrigin. SharpSvn содержит стандартный синтаксический анализ аргументов, который «знает», какие аргументы передаются каждому типу хуков. Это дает вам доступ к этому SvnLookOrigin:

SvnHookArguments ha; 
if (!SvnHookArguments.ParseHookArguments(args, SvnHookType.PreCommit, false, out ha))
{
    Console.Error.WriteLine("Invalid arguments");
    Environment.Exit(1);  
}

Получение измененных файлов и содержимого этих файлов на основе проанализированных аргументов

using (SvnLookClient cl = new SvnLookClient())
{
    Collection<SvnChangedEventArgs> changedItems;
    cl.GetChanged(ha.LookOrigin, out changedItems);

    foreach(var item in changedItems)
    {
        if(!IsXmlFile(item)) continue;

        using(MemoryStream ms = new MemoryStream())
        {
            cl.Write(ha.LookOrigin, item.Path, stream);

            VerifyXMLStream(stream);
        }
    }
}

Редактировать : записать в Console.Error и Environment.Exit(1), чтобы сообщить об ошибках (выход не ноль).

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