2012-03-20 5 views
0

Я играл с SharpSvn и должны анализировать папку в хранилище
и мне нужно знать, когда какой-то файл будет создан там,
не дата последнего изменения, но когда это былоПолучить дату создания файла с SharpSvn

У вас есть идеи, как это сделать?

Я начал со следующим:

Collection<SvnLogEventArgs> logitems; 
    var c = client.GetLog(new Uri(server_path), out logitems); 


    foreach (var i in logitems) 
    { 
     var properties = i.CustomProperties; 
     foreach (var p in properties) 
     { 
      Console.WriteLine(p.ToString()); 
      Console.WriteLine(p.Key); 
      Console.WriteLine(p.StringValue); 
     } 
    } 

Но я не вижу дату создания там.
Кто-нибудь знает, где его взять?

ответ

0

Похоже, я не могу этого сделать. Вот как я решил эту проблему: Я получаю время, если это SvnChangeAction.Add. Вот код (SvnFile мой собственный класс, а не от SharpSvn):

public static List<SvnFile> GetSvnFiles(this SvnClient client, string uri_path) 
{ 
    // get logitems 
    Collection<SvnLogEventArgs> logitems; 
    client.GetLog(new Uri(uri_path), out logitems); 

    var result = new List<SvnFile>(); 

    // get craation date for each 
    foreach (var logitem in logitems.OrderBy(logitem => logitem.Time)) 
    { 
     foreach (var changed_path in logitem.ChangedPaths) 
     { 
      string filename = Path.GetFileName(changed_path.Path); 
      if (changed_path.Action == SvnChangeAction.Add) 
      { 
       result.Add(new SvnFile() { Name = filename, Created = logitem.Time }); 
      } 
     } 
    } 

    return result; 
} 
0

Немного другой код, чем предыдущий:

private static DateTime findCreationDate(SvnClient client, SvnListEventArgs item) 
    { 
     Collection<SvnLogEventArgs> logList = new Collection<SvnLogEventArgs>(); 
     if (item.BasePath != "/" + item.Name) 
     { 
      client.GetLog(new Uri(item.RepositoryRoot + item.BasePath + "/" + item.Name), out logList); 
      foreach (var logItem in logList) 
      { 
       foreach (var changed_path in logItem.ChangedPaths) 
       { 

        string filename = Path.GetFileName(changed_path.Path); 
        if (filename == item.Name && changed_path.Action == SvnChangeAction.Add) 
        { 
         return logItem.Time;        
        } 
       } 
      } 
     } 
     return new DateTime(); 
    } 
Смежные вопросы