Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获取svn日志消息 使用(SvnClient client=new SvnClient()) { 提交(_targetPath,commitArgs); svninfeventargs结果; client.GetInfo(_targetPath,out result); SvnLogArgs args=新的SvnLogArgs(); args.Start=new SvnRevision(result.L​修订); args.End=新的SvnRevision(结果修订版); 收集资料; GetLog(_targetPath,args,out logitems); foreach(登录项中的SvnLogEventArgs日志条目) { 字符串author=logentry.author; 字符串消息=logentry.LogMessage; DateTime checkindate=logentry.Time; AddMessage(string.Fo​rmat(“由{0}在{1}上成功提交的消息:{2}”,作者,checkindate,消息)); } }_Svn_Logging_Sharpsvn - Fatal编程技术网

如何获取svn日志消息 使用(SvnClient client=new SvnClient()) { 提交(_targetPath,commitArgs); svninfeventargs结果; client.GetInfo(_targetPath,out result); SvnLogArgs args=新的SvnLogArgs(); args.Start=new SvnRevision(result.L​修订); args.End=新的SvnRevision(结果修订版); 收集资料; GetLog(_targetPath,args,out logitems); foreach(登录项中的SvnLogEventArgs日志条目) { 字符串author=logentry.author; 字符串消息=logentry.LogMessage; DateTime checkindate=logentry.Time; AddMessage(string.Fo​rmat(“由{0}在{1}上成功提交的消息:{2}”,作者,checkindate,消息)); } }

如何获取svn日志消息 使用(SvnClient client=new SvnClient()) { 提交(_targetPath,commitArgs); svninfeventargs结果; client.GetInfo(_targetPath,out result); SvnLogArgs args=新的SvnLogArgs(); args.Start=new SvnRevision(result.L​修订); args.End=新的SvnRevision(结果修订版); 收集资料; GetLog(_targetPath,args,out logitems); foreach(登录项中的SvnLogEventArgs日志条目) { 字符串author=logentry.author; 字符串消息=logentry.LogMessage; DateTime checkindate=logentry.Time; AddMessage(string.Fo​rmat(“由{0}在{1}上成功提交的消息:{2}”,作者,checkindate,消息)); } },svn,logging,sharpsvn,Svn,Logging,Sharpsvn,这是我的代码,但我只能得到一个日志条目,它应该是修订范围内所有日志的路径,有什么问题吗?我不知道有关此api的任何信息,但看起来您调用的GetLog的范围介于上次更改修订和当前修订之间。本能地,我认为根据定义,这只是一个日志条目 所以我认为你的修订范围是错误的。为什么不尝试对预期的修订范围进行编码,看看结果是否符合您的预期。我不知道有关此api的任何信息,但看起来您调用的GetLog的范围介于上次更改修订和当前修订之间。本能地,我认为根据定义,这只是一个日志条目 所以我认为你的修订范围是错误的。

这是我的代码,但我只能得到一个日志条目,它应该是修订范围内所有日志的路径,有什么问题吗?

我不知道有关此api的任何信息,但看起来您调用的GetLog的范围介于上次更改修订和当前修订之间。本能地,我认为根据定义,这只是一个日志条目


所以我认为你的修订范围是错误的。为什么不尝试对预期的修订范围进行编码,看看结果是否符合您的预期。

我不知道有关此api的任何信息,但看起来您调用的GetLog的范围介于上次更改修订和当前修订之间。本能地,我认为根据定义,这只是一个日志条目


所以我认为你的修订范围是错误的。你为什么不试着对预期的修订范围进行编码,看看结果是否符合你的预期。

好的,现在我从以下代码中得到了我想要的:

using (SvnClient client = new SvnClient())
{
    client.Commit(_targetPath, commitArgs);

    SvnInfoEventArgs result;
    client.GetInfo(_targetPath, out result);

    SvnLogArgs args = new SvnLogArgs();
    args.Start = new SvnRevision(result.L​astChangeRevision);
    args.End = new SvnRevision(result.Revision);

    Collection<SvnLog​EventArgs> logitems;
    client.GetLog(_targetPath, args, out logitems);

    foreach (SvnLogEventArgs logentry in logitems)
    {
        string author = logentry.Author;
        string message = logentry.LogMessage;
        DateTime checkindate = logentry.Time;
        AddMessage(string.Fo​rmat("Commited successfully by {0} on {1} for message: {2}", author, checkindate, message));
    }
}
使用(SvnClient client=new SvnClient())
{
尝试
{
提交(_targetPath,commitArgs);
SvnLogArgs args=新的SvnLogArgs();
//获取最新的更改版本
SvnWorkingCopyClient workingCopyClient=新的SvnWorkingCopyClient();
SvnWorkingCopyVersion;
workingCopyClient.GetVersion(_targetPath,out version);
long localRev=version.End;
args.Start=new SvnRevision(localRev);
args.End=新SvnRevision(localRev);
//获取最新日志
收集资料;
GetLog(_targetPath,args,out logitems);
如果(logitems.Count>0)
{
foreach(登录项[0]中的SvnChangeItem路径。更改路径)
{
AddMessage(string.Format(“更改路径,{0},更改日期,{1},按操作,{2}”,path.path,logitems[0]。Time,path.action));
}
}
WriteLogFile(messageLog.ToString());
}
捕获(SVEX)
{
}
}

好的,现在我从以下代码中得到了我想要的:

using (SvnClient client = new SvnClient())
{
    client.Commit(_targetPath, commitArgs);

    SvnInfoEventArgs result;
    client.GetInfo(_targetPath, out result);

    SvnLogArgs args = new SvnLogArgs();
    args.Start = new SvnRevision(result.L​astChangeRevision);
    args.End = new SvnRevision(result.Revision);

    Collection<SvnLog​EventArgs> logitems;
    client.GetLog(_targetPath, args, out logitems);

    foreach (SvnLogEventArgs logentry in logitems)
    {
        string author = logentry.Author;
        string message = logentry.LogMessage;
        DateTime checkindate = logentry.Time;
        AddMessage(string.Fo​rmat("Commited successfully by {0} on {1} for message: {2}", author, checkindate, message));
    }
}
使用(SvnClient client=new SvnClient())
{
尝试
{
提交(_targetPath,commitArgs);
SvnLogArgs args=新的SvnLogArgs();
//获取最新的更改版本
SvnWorkingCopyClient workingCopyClient=新的SvnWorkingCopyClient();
SvnWorkingCopyVersion;
workingCopyClient.GetVersion(_targetPath,out version);
long localRev=version.End;
args.Start=new SvnRevision(localRev);
args.End=新SvnRevision(localRev);
//获取最新日志
收集资料;
GetLog(_targetPath,args,out logitems);
如果(logitems.Count>0)
{
foreach(登录项[0]中的SvnChangeItem路径。更改路径)
{
AddMessage(string.Format(“更改路径,{0},更改日期,{1},按操作,{2}”,path.path,logitems[0]。Time,path.action));
}
}
WriteLogFile(messageLog.ToString());
}
捕获(SVEX)
{
}
}

我认为您试图做的是在提交工作副本时列出更改的文件,即在提交文件时显示文件通知。有一种比你现在做的更好的方法:

using (SvnClient client = new SvnClient())
{
    try
    {
        client.Commit(_targetPath, commitArgs);
        SvnLogArgs args = new SvnLogArgs();

        // get latest changed version
        SvnWorkingCopyClient workingCopyClient = new SvnWorkingCopyClient();
        SvnWorkingCopyVersion version;

        workingCopyClient.GetVersion(_targetPath, out version);
        long localRev = version.End;
        args.Start = new SvnRevision(localRev);
        args.End = new SvnRevision(localRev);

        //get latest log
        Collection<SvnLogEventArgs> logitems;
        client.GetLog(_targetPath, args, out logitems);
        if (logitems.Count > 0)
        {
            foreach (SvnChangeItem path in logitems[0].ChangedPaths)
            {
                AddMessage(string.Format("Changed path,{0},changed on,{1},by action,{2}", path.Path, logitems[0].Time, path.Action));
            }
        }

        WriteLogFile(messageLog.ToString());
    }
    catch (SvnException ex)
    {

    }

}
有关更多详细信息,请参阅事件和

此外,还可以使用具有以下类型的
out
参数的重载:


我认为您试图做的是在提交工作副本时列出更改的文件,即在提交文件时显示文件通知。有一种比你现在做的更好的方法:

using (SvnClient client = new SvnClient())
{
    try
    {
        client.Commit(_targetPath, commitArgs);
        SvnLogArgs args = new SvnLogArgs();

        // get latest changed version
        SvnWorkingCopyClient workingCopyClient = new SvnWorkingCopyClient();
        SvnWorkingCopyVersion version;

        workingCopyClient.GetVersion(_targetPath, out version);
        long localRev = version.End;
        args.Start = new SvnRevision(localRev);
        args.End = new SvnRevision(localRev);

        //get latest log
        Collection<SvnLogEventArgs> logitems;
        client.GetLog(_targetPath, args, out logitems);
        if (logitems.Count > 0)
        {
            foreach (SvnChangeItem path in logitems[0].ChangedPaths)
            {
                AddMessage(string.Format("Changed path,{0},changed on,{1},by action,{2}", path.Path, logitems[0].Time, path.Action));
            }
        }

        WriteLogFile(messageLog.ToString());
    }
    catch (SvnException ex)
    {

    }

}
有关更多详细信息,请参阅事件和

此外,还可以使用具有以下类型的
out
参数的重载:


“它应该是修订范围内所有日志的路径”是什么意思?是否要枚举提交的文件?您所说的“它应该是修订范围内所有日志的路径”是什么意思?是否要枚举提交的文件?您还没有解释要执行的操作,可能有更好/更简单的方法。请确保使用“格式为代码”按钮,和/或将代码缩进4个空格以获得更美观的布局。嗨,Sander Rijken,我尝试使用Notify和out commit result,但是我无法从您提到的方法中获得任何提交结果:SvnCommitResult commitResult;提交(_targetPath,commitArgs,out commitResult);提交后commitResult的值是多少?该值为null,提交文件后,我得到了null值。您还没有解释要做什么,可能有更好/更简单的方法。请确保使用“format as code”按钮,和/或将代码缩进4个空格以获得更好的布局。嗨,Sander Rijken,我曾尝试使用Notify和out提交结果,但我无法从您提到的方法中获得任何提交结果:SvnCommitResult commitResult;提交(_targetPath,commitArgs,out commitResult);提交后commitResult的值是多少?值为null,提交文件后,我得到了null值。很好的尝试,但看起来他想做一些不同的事情,尽管我不确定。很好的尝试,但是