IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

extraction VSS par etiquette


Sujet :

C#

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 5
    Points : 3
    Points
    3
    Par défaut extraction VSS par etiquette
    bonjours,
    je viens ici pour poser une question assez précise, sur l'extraction ou juste l'obtention d'une version d'une fichier ou dossier de VSS en me basant sur une étiquette passée au préalable.

    J’ai une arborescence pour un projet, sur le dossier source on a mis une étiquette SP1, et on a continue d’archiver les version comme d’habitude.
    Maintenant je désirerais extraire toute mon arborescence comme elle l’était lors de la pose de l’étiquette.
    Cela fonctionne très bien lorsque je le fais manuellement sur VSS, mais je dois l’inclure a un automate qui le fera en automatique.

    Voici le code que j’ai essayé mais qui ne fonctionne pas, il me récupère la dernière version quoi qu’il arrive 


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    public void getRecursifVSS(string sFolder, string copydir, string label, ref string sErrmsg)
    {
    try
          {
    		IVSSItem vssFolder = vssDatabase.get_VSSItem(sFolder, false);
     
                if ((label != null) && (label.Trim() != ""))
                {
                	foreach (IVSSVersion ver in vssFolder.get_Versions(0))
                      if ((((SourceSafeTypeLib.VSSItemClass)(ver.VSSItem)).Name == vssFolder.Name) && (ver.Label == label))
     
    ver.VSSItem.Get(ref testFile, (int)(VSSFlags.VSSFLAG_RECURSYES | VSSFlags.VSSFLAG_FORCEDIRNO | VSSFlags.VSSFLAG_TIMEMOD | VSSFlags.VSSFLAG_USERRONO));
    		}
                else
                	vssFolder.Get(ref testFile, (int)(VSSFlags.VSSFLAG_RECURSYES | VSSFlags.VSSFLAG_FORCEDIRNO | VSSFlags.VSSFLAG_TIMEMOD | VSSFlags.VSSFLAG_USERRONO));
    }
          catch (Exception ex)
          {
          	Elog.Insert_Log(ex);
          }
    }

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    Salut

    le bout de code suivant me permet de récupérer ce que je veux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    VSSDatabase vss = new VSSDatabase();
                vss.Open(@"D:\Vss\TrEsti\TrEsti\srcsafe.ini", "netienne", "");
                vss.CurrentProject = "EssaiSolution";
                VSSItem item = vss.get_VSSItem("$/EssaiSolution", false);            
                IVSSItems items = item.get_Items(false);
    foreach (VSSItem it in items)
                {
                    if (it.Name.Contains(".txt"))
                    {
                        IVSSVersions versions = it.get_Versions(0);
                        foreach (IVSSVersion v in versions)
                        {
                            Trace.WriteLine("Label : " + v.Label + " = version n° " + v.VersionNumber.ToString());
                            if (v.Label == "SP1")
                            {
                                string path = @"d:\vss\trace.txt";
                                v.VSSItem.Get(ref path, (int)VSSFlags.VSSFLAG_GETYES);
                            }
                        }
     
                        Trace.WriteLine("Item name : " + it.Name + " " + it.Type.ToString());
                    }
                }
    Je recupere "toutes" les versions disponibles pour chaque objet, et en fonction de la version qui me convient (je compare au label), je prends directement l'object via la propriété VSSItem de l'objet IVSSVersion

    C'est surement pas la solution la plus "élégante", mais disons que j'avais
    pas bcp de temps à consacrer à ta question

    Ca devrait résoudre ton problème ?

    The Monz, Toulouse

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    le probleme c'est que je ne vois pas du tout la difference entre ton code et le mien , et le mien ne fonctionne pas.

    attention, pour mettre notre etiquette nous avons etiqueté le dossier source, et les dossier et fichiers inferieur ont herités de cette etiquette, la ce que j'essai de recuperer c'est le dossier source entier, pas un fichier.
    je sais que VSS ne fais pas trop la difference entre dossiers et fichiers dans son arbo, mais je vais essayer sur un fichier voir si ca marche.

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/07/2007, 17h16
  2. Réponses: 2
    Dernier message: 10/05/2007, 12h55
  3. [RegEx] Extraction d'une partie d'une URL par expression régulière
    Par Maxbenji dans le forum Langage
    Réponses: 2
    Dernier message: 16/01/2007, 22h26
  4. Extraction opération par utilisateur SQL
    Par voodoo_mg dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 14/04/2006, 12h30
  5. Réponses: 4
    Dernier message: 02/09/2004, 21h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo