147 votes

Comment supprimer un mappage d'espace de travail TFS ?

J'avais un projet dans tfs au sein d'un projet d'équipe, puis nous avons déplacé le projet à un endroit différent dans un autre projet d'équipe.

J'avais configuré Jenkins pour qu'il se connecte au projet d'équipe et construise ma solution, mais lorsque j'ai modifié les paramètres pour me connecter au nouveau projet d'équipe tfs, il me donne l'erreur suivante :

[workspace] $ "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\tf.exe" workspace -new Hudson-ProjectName1-Build-MASTER;domain1\username1 -noprompt -server:http://domain-eg.net:8080/tfs/newteamproject ********
The path D:\jenkins\jobs\ProjectName1-Build\workspace is already mapped in workspace Hudson-ProjectName1-Build-MASTER [http://domain-eg.net:8080/tfs/oldteamproject].

L'image ci-dessus montre qu'il y a un espace de travail existant. J'ai donc exécuté la commande suivante pour le supprimer

tf workspace -delete Hudson-ProjectName1-Build-MASTER;domain1\username1 -noprompt -server:http://domain-eg.net:8080/tfs/oldteamproject

et il m'a été indiqué que l'espace de travail avait été supprimé, mais je reçois toujours la même erreur.

J'ai également vérifié si le mappage a été supprimé ou non en exécutant la commande ci-dessous :

tf workspace -server:http://domain-eg.net:8080/tfs/oldteamproject Hudson-ProjectName1-Build-MASTER

mais il dit que l'espace de travail n'existe pas comme prévu.

J'ai donc pensé qu'elle pouvait être mise en cache quelque part et j'ai lancé la commande ci-dessous :

tf workspaces /remove:* /collection:http://domain-eg.net:8080/tfs/oldteamproject

et il a dit "Aucun espace de travail dans le cache ne correspond à * du serveur http://domain-eg.net:8080/tfs/oldteamproject "

donc je suppose que ce n'est même pas en cache.

Alors, quelle est la cause de cette erreur et comment la résoudre ?

5voto

Jaxidian Points 4946

Toutes les réponses données ici semblent être des réponses partielles qui ne fonctionnent pas dans tous les cas. Je pense que cette réponse fonctionnera dans tous les cas, en supposant que vous ayez les autorisations appropriées.

  1. Ouvrez l'invite de commande du développeur. Dans mon cas, j'ai testé cela avec l'invite de commande du développeur pour VS 2019.
  2. Tapez cette commande : tf workspaces

Notez que les résultats peuvent lister plusieurs tables avec une structure identique. Si vous ne voyez qu'un seul tableau, alors certaines des hypothèses des autres réponses peuvent vous convenir. En revanche, si vous voyez deux tableaux ou plus, alors que Collection est important ! Pour nos exemples, nous allons supposer que vous avez deux Collections (deux n'est pas différent de quatre si ce n'est que l'un est plus fastidieux que l'autre à parcourir) :

https://dev.azure.com/foo y https://bar.visualstudio.com/

Avec un peu de chance, vous saurez avec lequel de ces deux-là vous voulez travailler. Toutefois, si vous devez les parcourir toutes, vous devrez le faire une collection à la fois. Chaque "Collection" ici est la même chose qu'une "Organisation" dans Azure DevOps (je pense).

Si vous n'utilisez pas ce détail de la collection, vous risquez de voir apparaître un message d'erreur :

Impossible de déterminer le serveur de contrôle de la source.

  1. Ensuite, tapez cette commande pour la collection que vous voulez utiliser :

tf workspaces /computer:* /owner:* /collection:https://dev.azure.com/foo

Cela vous donnera une image beaucoup plus complète de ce à quoi vous avez affaire. Cela devient particulièrement désagréable si vous avez eu plusieurs MSA et comptes Org qui ont accédé à ce repo depuis le même ordinateur. En fait, vous pouvez avoir plusieurs entrées apparemment identiques. Si vous essayez de les supprimer sur la base de ce que vous savez actuellement, cela peut ne pas fonctionner. Mais nous pouvons obtenir plus d'informations.

  1. Ensuite, nous allons exécuter la même commande mais en ajoutant /format:xml à la fin de celui-ci :

tf workspaces /computer:* /owner:* /collection:https://dev.azure.com/foo /format:xml

Vous obtenez ainsi un paquet de XML avec quelques propriétés supplémentaires. Celles qui nous intéressent le plus sont les alias des propriétaires. Ce sont les informations manquantes dont vous avez besoin pour supprimer ces espaces de travail. Sans ces informations supplémentaires, il est facile de se heurter à un mur et d'être bloqué par un message d'erreur :

Spécifiez un espace de travail.

  1. Maintenant, nous avons toutes les informations dont nous avons besoin. Compte tenu de l'information supplémentaire OwernAliases sélectionnez l'entrée unique (ou répétez-la s'il y en a plusieurs) que vous souhaitez supprimer et utilisez la commande suivante (quelques exemples sont donnés) :

    • tf workspace /delete /collection:https://dev.azure.com/foo "MyWorkspaceName;Windows Live ID\John.Doe@hotmail.com"
    • tf workspace /delete /collection:https://dev.azure.com/foo "MyWorkspaceName;John Doe"
    • tf workspace /delete /collection https://dev.azure.com/foo "MyWorkspaceName;2C3E8474-A39C-4785-8794-DC72F09981E6\John.Doe@Example.com"

Le GUID identifie un répertoire AAD et les guillemets sont là pour gérer les espaces qui pourraient se trouver dans un alias. Le "MyWorkspaceName" provient de vos requêtes précédentes listant les espaces de travail.


Sans cette approche très approfondie, il est possible que toutes les autres réponses de cette question échouent pour vous. En effet, si certaines de ces solutions permettent d'effacer les espaces de travail locaux, elles n'effacent pas les espaces de travail des serveurs, avec lesquels vous pouvez encore entrer en conflit. En outre, si vous avez déjà utilisé un autre compte, les choses peuvent se compliquer, par exemple si vous êtes passé d'un compte MSA à un compte AAD. Et les choses se compliquent VRAIMENT si vous avez un compte MSA. et plusieurs comptes AAD, tous avec la même adresse électronique que vous avez utilisée à partir du même poste de travail. Et les choses se compliquent si plusieurs de ces comptes utilisent tous le nom par défaut de l'espace de travail : le nom d'hôte de votre ordinateur. Dans mon cas, j'avais quatre espaces de travail ayant tous le même nom d'espace de travail, le même nom de propriétaire et le même nom d'ordinateur (c'est-à-dire que la première requête sans le formatage XML avait 4 enregistrements identiques !)


Je ne sais pas s'il existe un moyen plus graphique de gérer ces éléments. J'ai cherché et je n'ai pas encore trouvé de meilleur moyen que celui-ci.

4voto

Mise à jour 2019-01-23

Si vous obtenez à plusieurs reprises l'erreur suivante The workspace wkspaceEg does not exist… même après avoir utilisé le bon nom d'utilisateur ( wkspcOwnerDomain\wkspcOwnerUsername ) dans le tf workspace commande, par exemple,

tf workspace "wkspaceEg;wkspcOwnerDomain\wkspcOwnerUsername" /collection:http://tfs.example.com:8080/tfs/collectionEg /login:TFSUsername,TFSPassword

alors le tf workfold peut aider à le réparer. Voir cette question .

Si même cela ne fonctionne pas et que vous ne pouvez/ne voulez pas utiliser Les acolytes de TSF , passez à l'option risquée de la dernière chance ci-dessous.


J'utilise TFS 2012. J'ai essayé tout ce qui était suggéré en ligne : suppression du dossier cache, utilisation de la liste déroulante des espaces de travail, tf workspaces /remove:*, suppression des informations d'identification du Panneau de configuration, IE, etc.

Rien n'a fonctionné, je crois que mon espace de travail a été corrompu d'une manière ou d'une autre. Finalement, je suis allé dans la base de données TFS et j'ai exécuté les requêtes suivantes. Cela a marché ! Bien entendu soyez très prudent lorsque vous manipulez la base de données , faire des sauvegardes, etc.

La base de données s'appelle Tfs_<<your_TFS_collection_name>> . Ignorer le Tfs_Configuration Base de données MSSQL. Je ne suis pas sûr mais si vous n'avez pas une Tfs_<<your_TFS_collection_name>> les paramètres peuvent se trouver dans la base de données Tfs_DefaultCollection base de données. Le mappage est stocké dans tbl_WorkingFolder.LocalItem .

/*Find correct workspace*/
SELECT WorkspaceId, *
FROM tbl_Workspace
ORDER BY WorkspaceName

/*View the existing mapping*/
SELECT LocalItem, *
FROM tbl_WorkingFolder
WHERE WorkspaceId = <<WorkspaceId from above>>

/*Update mapping*/
UPDATE tbl_WorkingFolder
SET LocalItem = 'D:\Legacy.00\TFS\Source\Workspaces\teamProjEg' WHERE
/*LocalItem = NULL might work too but I haven't tried it*/
WorkspaceId = <<WorkspaceId from above>>

4voto

Deepu Reghunath Points 1509

Team Explorer > Source Control Explorer >

TFS Remove MAPPING

3voto

Alex Kamburov Points 96

J'ai réussi à supprimer le mappage en utilisant la commande /newowner comme suggéré ici :

Comment puis-je retrouver l'accès à mon espace de travail Team Foundation Server ?

La commande a ouvert une fenêtre d'espace de travail d'édition où j'ai supprimé le mappage. Ensuite, j'ai supprimé l'espace de travail dont je n'avais pas besoin.

2voto

Chris Cuciak Points 41

Aucune des réponses données ici n'a supprimé mes espaces de travail. Mais voici une solution qui pourrait vous convenir.

  1. Ouvrez une invite de commande Visual Studio
  2. Fermez d'abord Visual Studio, sinon la commande de suppression risque de ne pas supprimer l'espace de travail.
  3. Lister les commandes de l'espace de travail -> tf / ? pour trouver les commandes qui vous sont disponibles selon la version de TFS.
  4. Lister les espaces de travail -> tf workspaces
  5. Supprimer l'espace de travail -> tf workspace YourWorkspace /delete

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X