2015-03-17 3 views
4

Рассмотрим следующую программу:Удаление репозиторий

var path = Path.Combine(
    Path.GetTempPath(), 
    Path.GetFileNameWithoutExtension(Path.GetRandomFileName())); 
Directory.CreateDirectory(path); 

var testFile = Path.Combine(path, "test.txt"); 
File.WriteAllText(testFile, "Test file"); 

var source = Repository.Init(path); 

using (var repository = new Repository(source)) 
{ 
    repository.Index.Add("test.txt"); 
} 

Directory.Delete(path, true); 

На удалении папки хранилища я получаю UnauthorizedAccessException - доступ к одному из внутренних файлов GIT отказано. Есть ли что-нибудь еще, что я должен удалить, чтобы удалить папку?

ответ

7

Есть ли что-нибудь еще, что я должен удалить, чтобы удалить папку?

Ваш шаблон размещения просто отлично. Указанный вопрос имеет другое происхождение.

Как указано в documentation, UnauthorizedAccessException возникает, когда есть проблема, связанная разрешение.

Действительно, Libgit2Sharp ведет себя аналогично git в отношении этого и помещает файлы под иерархией .git/objects как доступные только для чтения, таким образом, это исключение при попытке удалить их.

Чтобы обойти это и облегчить очистку при выполнении наших тестов, мы разработали вспомогательный метод (то есть DirectoryHelper.DeleteDirectory()), который рекурсивно выводит эти атрибуты только для чтения и удаляет файлы и каталоги.

source code Вы бы хотели его повторно использовать.

Смежные вопросы