2009-06-12 7 views
2

J'ai la situation suivante.Comment supprimer du contenu tfs local par programmation?

Je crée par programme un espace de travail temporaire en utilisant TFS. Je le mappe ensuite sur ma machine locale pour que je puisse vérifier/extraire les fichiers. Depuis le mappage vers le lecteur local à travers l'espace de travail est ce qui crée la structure de fichier. Quel est le moyen de supprimer le mappage à travers l'objet d'espace de travail que j'ai créé?

J'ai essayé ce qui suit.

WorkingFolder tempFolder = workspace.getWorkingFolderForServerItem(serverItem); 
workspace.DeleteMapping(tempFolder); 

Parcourant en mode débogage, l'objet tempFolder je fais tient la cartographie locale correcte ainsi que le mappage de serveur correct. Je ne peux pas sembler l'obtenir pour supprimer le contenu local cependant. Est-ce que c'est la plupart du temps correct ou suggérez-vous quelque chose de complètement différent?

Répondre

3

Dans TFS, l'astuce pour supprimer des fichiers localement et dire au serveur que vous ne les avez plus est d'obtenir les fichiers à Changeset 1 (c'est-à-dire avant qu'ils n'existent). Dans le code qui serait quelque chose comme:

workspace.Get(
    new string[] {"C:\\LocalPath"}, 
    new ChangesetVersionSpec(1), 
    RecursionType.Full, 
    GetOptions.None); 

Voir le blog suivant où j'explique ce concept un peu plus:

Cela dit, si l'espace de travail est que temporaire et vous n'en avez plus besoin, puis faire un workspace.Delete() suivi d'une suppression de fichier traditionnel est une excellente façon de faire les choses. Si vous essayiez de garder l'espace de travail, vous pourriez avoir des problèmes (parce que TFS pense que ces fichiers sont encore dans votre espace de travail local sauf si vous le dites qu'ils ne le sont pas)

1

Depuis le mappage vers le lecteur local à travers l'espace de travail est ce qui crée la structure de fichier.

Je pense que vous avez tort. Les dossiers locaux (et les fichiers) sont créés uniquement lorsque vous effectuez le get après la création du mappage (que ce soit à partir de l'interface graphique Team Explorer, "tf.exe get" ou autre). Après la suppression du mappage de l'espace de travail, vous devrez créer du code pour supprimer les fichiers et les dossiers vous-même.

+0

Merci de me corriger lorsque le contenu local est effectivement abattu. – maleki

0

Grâce à Richard, j'ai décidé de ne pas essayer de supprimer le fichier dans l'espace de travail.

Étant donné:

WorkingFolder tempFolder = workspace.getWorkingFolderForServerItem(serverItem); 

Je fini par faire:

File.setAttributes(tempFolder.LocalItem, FileAttributes.normal)//Get rid of read-only 
File.Delete(tempFolder.LocalItem); 

Merci pour l'aide!

Questions connexes