2009-06-12 4 views
11

J'utilise SharpSvn d'interagir avec mon dépôt svn via le code C#. J'utilise ce code pour récupérer les entrées svn du journal:Utiliser SharpSvn pour récupérer les entrées du journal dans une plage de dates

Collection<SvnLogEventArgs> logitems; 
var uri = new Uri("http://myserver/svn/foo/bar.txt"); 
client.GetLog(uri, out logitems); 
foreach (var logentry in logitems) 
{ 
    string author = logentry.Author; 
    string message = logentry.LogMessage; 
    DateTime checkindate = logentry.Time; 
} 

Cela fonctionne bien, mais maintenant je veux limiter les entrées du journal retournées par date de révision. C'est quelque chose qui peut être fait via la ligne de commande svn avec quelque chose comme

svn log "http://myserver/svn/foo/bar.txt" --revision {2008-01-01}:{2008-12-31} 

Je ne peux pas sembler trouver une capacité parallèle au sein SharpSvn. Quelqu'un peut me diriger dans la bonne direction?

Répondre

24

Vous pouvez l'essayer comme ceci:

DateTime startDateTime = // ...; 
DateTime endDateTime = // ...; 
SvnRevisionRange range = new SvnRevisionRange(new SvnRevision(startDateTime), new SvnRevision(endDateTime)); 
client.GetLog(uri, new SvnLogArgs(range), out logitems); 
+0

Merci! J'ai manqué le fait que SvnRevision pourrait prendre un DateTime dans son constructeur. –

4

I pense vous pourriez être en mesure de le faire en utilisant l'une des GetLog fonction qui prend un SharpSvn.SvnLogArgs paramètre.

public bool GetLog(System.Uri target, SharpSvn.SvnLogArgs args, 
     out System.Collections.ObjectModel.Collection logItems) 

Cette classe a Start/End qui sont SharpSvn.SvnRevision objets qui ressemblent comme ils peuvent prendre un paramètre "temps".

Je n'ai fait un peu avec elle, mais ce serait où vous pouvez commencer à chercher.

Questions connexes