Получить дату создания файла с SharpSvn - PullRequest
0 голосов
/ 20 марта 2012

Я играю с 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);
        }
    }

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

Ответы [ 2 ]

0 голосов
/ 15 августа 2013

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

    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();
    }
0 голосов
/ 21 марта 2012

Похоже, я не могу этого сделать. Вот как я решил эту проблему: Я получаю время, если это был 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;
}
...