2008-11-13 8 views
3

J'ai besoin d'obtenir un fichier de la base de données sourcesafe par programme. Une idée de comment le faire? Ps: Je vais le faire en utilisant C#.Comment obtenir un fichier de sourcesafe par programmation?

+3

Ce commentaire est une sorte de obligatoire, mais se éloigner de SourceSafe aussi vite que vous pouvez, si possible. – MusiGenesis

+0

Dans quelques semaines, oui je le ferai! :) –

Répondre

10
using System; 
using System.Collections.Generic; 
using SourceSafeTypeLib; 

namespace YourNamespace 
{ 

public class SourceSafeDatabase 
{ 
    private readonly string dbPath; 
    private readonly string password; 
    private readonly string rootProject; 
    private readonly string username; 
    private readonly VSSDatabaseClass vssDatabase; 

    public SourceSafeDatabase(string dbPath, string username, string password, string rootProject) 
    { 
     this.dbPath = dbPath; 
     this.username = username; 
     this.password = password; 
     this.rootProject = rootProject; 

     vssDatabase = new VSSDatabaseClass(); 
    } 

    public List<string> GetAllLabels() 
    { 
     List<string> allLabels = new List<string>(); 

     VSSItem item = vssDatabase.get_VSSItem(rootProject, false); 
     IVSSVersions versions = item.get_Versions(0); 

     foreach (IVSSVersion version in versions) 
     { 
      if (version.Label.Length > 0) 
      { 
       allLabels.Add(version.Label); 
      } 
     } 

     return allLabels; 
    } 

    public void GetLabelledVersion(string label, string project, string directory) 
    { 
     string outDir = directory; 
     vssDatabase.get_VSSItem(rootProject, false).get_Version(label).Get(ref outDir, (int)VSSFlags.VSSFLAG_RECURSYES + (int)VSSFlags.VSSFLAG_USERRONO); 
    } 

    public void Open() 
    { 
     vssDatabase.Open(dbPath, username, password); 
    } 

    public void Close() 
    { 
     vssDatabase.Close(); 
    } 

} 


// some other code that uses it 

SourceSafeDatabase sourceControlDatabase = new sourceControlDatabase(...); 
sourceControlDatabase.Open(); 
sourceControlDatabase.GetLabelledVersion(label, rootProject, projectDirectory); 
sourceControlDatabase.Close(); 
+0

Merci pour l'exemple de code. Je vais essayer, puis revenir à vous. –

+0

bonne chance. laissez-moi savoir si vous voulez plus d'aide. et merci à celui qui a fixé mon formatage. J'ai essayé de le faire paraître ok mais échoué et abandonné! – solrevdev

+0

Bon point de départ merci – Andez

2

Il existe un programme SS.EXE de ligne de commande que vous pouvez appeler pour effectuer des opérations de contrôle de source. Cependant, il repose sur la configuration globale de SourceSafe et il est donc parfois difficile de le faire faire ce que vous voulez.

Questions connexes