Sharp SVN Update вылетает из-за несуществующего файла - PullRequest
0 голосов
/ 27 апреля 2020

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

Код был запущен с командой svn:

svn update localRepoPath

Я уже нашел много кода, но ничего из этого у меня не работает, вот код на данный момент:

 using (SvnClient client = new SvnClient())
                    {
                        //Reporter creates standard svn output
                        StringBuilder strBuilder = new StringBuilder();
                        SvnClientReporter reporter = new SvnClientReporter(client, strBuilder);

                        SvnUpdateArgs asdf = new SvnUpdateArgs();
                        asdf.AllowObstructions = true;
                        asdf.Depth = SvnDepth.Infinity;
                        asdf.IgnoreExternals = true;
                        asdf.UpdateParents = true;
                        asdf.Revision = SvnRevision.Head;
                        asdf.ThrowOnError = false;

                        asdf.Conflict += new EventHandler<SvnConflictEventArgs>(asdf_Conflict);
                        asdf.SvnError += new EventHandler<SvnErrorEventArgs>(asdf_Error);
                        asdf.Notify += new EventHandler<SvnNotifyEventArgs>(asdf_Notify);
                        asdf.Progress += new EventHandler<SvnProgressEventArgs>(asdf_Progress);

                        client.Update(localRepoPath, asdf);
                        _logger.Info("Updated");
                        _logger.Info(strBuilder.ToString());
                    }

Ничего не обновлялось.

Когда я изменил свойство asdf.ThrowOnError на true:

asdf.ThrowOnError = true;

Выход журнала был:

Необработанное исключение: SharpSvn.SvnSystemException: не удается открыть 'D: \ workspace \ MyRepository \ trunk \ .svn \ tmp \ svn-E2A597E3': системе не удается найти указанный путь.

Но это файл 'svn-E2A597E3' не существует, почему он пытается обновить этот файл? После попытки обновить этот файл происходит сбой, и обновление не пытается обновить остальную часть хранилища.

Как я могу справиться с этим, если он не пытается обновить этот файл или что он не делает остановить обновление?

1 Ответ

1 голос
/ 28 апреля 2020

Работает сейчас!

Каталог, который я хотел обновить, был zip-файлом, который ранее был разархивирован с помощью SharpZipLib. К сожалению, мой метод извлечения этого Zip-файла был неверным и игнорировал пустые каталоги. Должно быть, это производило cra sh из обновления svn. Папка "tmp" из сообщения об исключении не существует в рабочей копии. Тело метода извлечения теперь выглядит так:

            FastZip fastZip = new FastZip();
            string fileFilter = ".*";
            fastZip.CreateEmptyDirectories = true;

            // Will always overwrite if target filenames already exist
            fastZip.ExtractZip(localZipFileNameAndPath, extractDir, fileFilter);
...