2017-06-29 22 views
1

Bonjour à tous les gens intelligents!Comment obtenir une application et un nom de branche à partir d'un numéro de révision Svn?

Compte tenu du numéro de révision de toute application dans mon dépôt Subversion, comment puis-je (en utilisant SharpSvn):

  1. Déterminer qui nom de l'application le numéro de révision identifie?
  2. Déterminez s'il s'agit d'un bloc ou d'un branche révision?
  3. Déterminer le nom de la branche (s'il s'agit d'une révision de branche)?

Mon dépôt est organisé de cette façon:

Application1 
    Trunk 
     <Application files> 
    Branches 
     BranchName1 
      <Application files> 
     BranchName2 
      <Application files> 
     ... 
Application2 
    Trunk 
     <Application files> 
    Branches 
     BranchName1 
      <Application files> 
     BranchName2 
      <Application files> 
     ... 

Je suppose que je devrais récupérer en quelque sorte l'ensemble des fichiers qui ont été modifiés avec ce numéro de révision spécifique, puis regarder les chemins de fichiers Svn?

Cela peut-il être fait?

Répondre

1

Dans les numéros de révision SVN sont globaux pour l'ensemble du référentiel, il n'y a donc pas de "révision de ligne réseau". Mais ce que vous pouvez faire pour déterminer quels chemins ont été affectés par la révision, est quelque chose comme svn log -r<REV> --verbose.

En SharpSvn il y a les méthodes SvnClient.LogMethod(Uri, SvnLogArgs, EventHandler<SvnLogEventArgs>) qui vous permet de spécifier un gestionnaire d'événements que vous pouvez utiliser pour trouver les chemins affectés et SvnClient.GetLog(Uri, SvnLogArgs, out Collection<SvnLogEventArgs>) qui vous donne une collection des messages du journal que vous pouvez utiliser pour trouver les chemins affectés.

http://docs.sharpsvn.net/current/html/M_SharpSvn_SvnClient_Log_4.htm

exemple Petit (avec GetLog()):

using (var client = new SvnClient()) 
      { 
       SvnLogArgs logArgs = new SvnLogArgs(); 
       Collection<SvnLogEventArgs> logResults; 
       if (client.GetLog(new Uri("RepositoryUri"), logArgs, out logResults)) 
       { 
        foreach (var logResult in logResults) 
        { 
         if (logResult.ChangedPaths.Contains("searchedPath")) 
         { 
          // do something with the information 
         } 
        } 
       }      
       return; 
      } 
+2

Vous pouvez améliorer votre réponse en ajoutant un exemple simple pour les utilisateurs OP et futurs. Votre réponse devrait être autonome, de sorte que si le lien que vous pointez disparaît, votre réponse reste utile. – ray