2015-03-17 1 views
4

programme suivant Tenir compte:Suppression du dépôt git

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); 

En cas de suppression du dossier référentiel je reçois un UnauthorizedAccessException - l'accès à l'un des fichiers git internes est refusé. Y a-t-il autre chose dont je devrais disposer pour supprimer le dossier?

Répondre

7

Y a-t-il autre chose dont je devrais disposer pour supprimer le dossier?

Votre modèle de disposition est très bien. Le problème mentionné a une origine différente.

Comme indiqué dans le documentation, UnauthorizedAccessException est soulevé quand il y a un problème lié à l'autorisation.

En effet, Libgit2Sharp se comporte de manière similaire à git à ce sujet et marque les fichiers sous la hiérarchie .git/objects en lecture seule, d'où l'exception levée lors d'une tentative de suppression. Afin de contourner ce problème et de faciliter la phase de nettoyage lorsque nos tests sont exécutés, nous avons développé une méthode d'assistance (par exemple, DirectoryHelper.DeleteDirectory()) qui désactive de manière récursive ces attributs en lecture seule et supprime les fichiers et répertoires.

Voir le source code seriez-vous prêt à le réutiliser.