7
votes

Obtenez le contenu du fichier TFS Shelveset à l'invite de commande?

Je suis intéressé à obtenir le contenu d'une nivelle à l'invite de commande. Maintenant, vous penseriez qu'une cmdlet telle que Get-TfsShelveset, disponible dans les outils électriques TFS, le ferait. Vous pourriez également penser que "Tf.exe Benvesets" ferait cela.

Cependant, sauf si j'ai manqué quelque chose, je suis consterné de signaler qu'aucun de ceux-ci n'est le cas. Au lieu de cela, chaque commande vous oblige à lui donner un nom de billetterie, puis à régurgiter simplement un seul article de ligne pour ce billetterie, ainsi que de métadonnées sur le logement tel que créationDate, displayName, etc. mais aussi loin que je peux dire, mais aussi loin que possible. dire ce qui est réellement dans l'étagère.

Ceci est particulièrement odieux pour Get-TfsShelveset, qui permet d'inclure une gamme de descripteurs de fichiers avec l'objet Shelveset, il revient. J'ai même essayé d'être intelligent, pensant que je pouvais récolter les noms de fichiers de l'utilisation -Quif avec Restore-Tfsshelveset, mais une restauration malheureusement-tfsshelveset n'applique pas - -whatif.

S'il vous plaît, quelqu'un me dit que je me trompe à ce sujet!


1 commentaires

La réponse de Richard est beaucoup plus simple que la réponse acceptée: Statut de TF / Shelveset: Nom


6 Réponses :


3
votes

Essayez:

Revue TFPT / Shelveset: Nom de merveille; Nom d'utilisateur

Vous devrez peut-être également ajouter sur l'option Server afin de choisir:

Revue TFPT / Shelveset: Revue de code; Jim / Sever: Société-Source

Je pense que c'est ce que vous recherchez.


3 commentaires

Ah Nuts. C'est si proche! C'est en fait ce que je cherche, mais il apparaît une fenêtre d'interface utilisateur au lieu d'imprimer tout ce qui peut être consommé dans un pipeline par PowerShell.


Oui, c'est le seul moyen d'obtenir ce type de liste de la ligne de commande que je suis au courant: /


Cela apparaît une boîte de dialogue d'interface graphique. Mon besoin est d'obtenir la liste des fichiers sous forme de texte.



5
votes

Il est possible de construire une petite application de ligne de commande utilisant le SDK TFS, qui renvoie la liste des fichiers contenus dans une bizarre donnée.
L'échantillon ci-dessous assume la connaissance du nom de Shelveset et son propriétaire:

using System;
using System.IO;
using System.Collections.ObjectModel;
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.Framework.Common;
using Microsoft.TeamFoundation.Framework.Client;
using Microsoft.TeamFoundation.VersionControl.Client;

namespace ShelvesetDetails
{
    class Program
    {
        static void Main(string[] args)
        {
            Uri tfsUri = (args.Length < 1) ? new Uri("TFS_URI") : new Uri(args[0]);

            TfsConfigurationServer configurationServer = TfsConfigurationServerFactory.GetConfigurationServer(tfsUri);

            ReadOnlyCollection<CatalogNode> collectionNodes = configurationServer.CatalogNode.QueryChildren(
                new[] { CatalogResourceTypes.ProjectCollection },
                false, CatalogQueryOptions.None);

            CatalogNode collectionNode = collectionNodes[0];

            Guid collectionId = new Guid(collectionNode.Resource.Properties["InstanceId"]);
            TfsTeamProjectCollection teamProjectCollection = configurationServer.GetTeamProjectCollection(collectionId);

            var vcServer = teamProjectCollection.GetService<VersionControlServer>();

            Shelveset[] shelves = vcServer.QueryShelvesets(
                "SHELVESET_NAME", "SHELVESET_OWNER");
            Shelveset shelveset = shelves[0];

            PendingSet[] sets = vcServer.QueryShelvedChanges(shelveset);
            foreach (PendingSet set in sets)
            {
                PendingChange[] changes = set.PendingChanges;
                foreach (PendingChange change in changes)
                {
                    Console.WriteLine(change.FileName);
                }
            }
        }
    }
}


2 commentaires

Je pense que je pourrais peut-être transformer cela en une cmdlet à l'aide de la technique décrite dans cet article: akutz.wordpress.com/2010/11/03/get-MSI . Fera rapport.


Marquant ceci comme réponse pour donner un crédit approprié à ma solution, étant donné ci-dessous.



2
votes

C'est ce que j'ai fini avec, sur la base du code de Pentelif et de la technique de l'article à http://akutz.wordpress.com/2010/11/03/get-msi/ liée dans mon commentaire. XXX


1 commentaires

En raison des contraintes de temps, ce code n'a pas encore été documenté et la manipulation des erreurs est minimale, etc. etc. Standard MSDN Magazine Boiline Clause de non-responsabilité, etc., etc :) :)



1
votes

a passé quelques jours à essayer de le faire aussi, cela a toujours été sur Google, voici ce que j'ai trouvé pour aider les générations futures:

Pour obtenir le contenu du Shelveset (au moins avec l'explorateur d'équipe partout),
Utilisez la commande: Différence TF / Shelveset:

qui imprimera le contenu du belvier et donnera des noms de fichiers sous la forme:
: ; C
Changement de suspension: ;

Donc, si votre fichier est contenu / test.txt
Dans le Shelveset Shelve1 (avec révision de base 1), vous verrez:
EDIT: $ / contenu / fichier.txt; C1
Changement suspendu: $ / contenu / fichier.txt; Shelve1

Après cela, en utilisant la commande impression TF
(ou afficher si pas l'utilisation de tee) sur $ / contenu / fichier.txt; shelve1 devrait vous obtenir le contenu:

TF Imprimer $ / contenu / fichier.txt; Shelve1

montre que vous êtes dans le file.txt dans Shelveset Shelve1


0 commentaires

11
votes
Get-TfsPendingChange -Shelveset name

0 commentaires

0
votes

Si vous souhaitez obtenir des changements de logement du serveur à l'aide de la commande TFS

à l'aide de l'alimentation:

get-tfspendententanchange -server http://example.com/org -Seet ShelvsetName

Utilisation des commandes VS:

C: \ Projets> TF Bilavesets BuddyTest_23

Plus d'infos à ce sujet S'il vous plaît voir ici https: // docs. Microsoft.com/en-us/AZURE/DEVOPS/REPOS/TFVC/SHELSETS-COMMAND?View=AZURE-DEVOPS


0 commentaires