Java SVN提交日志问题

Java SVN提交日志问题,java,eclipse,svn,logging,svnkit,Java,Eclipse,Svn,Logging,Svnkit,我目前正在做一个关于计算的项目。我已经完成了项目的主要部分,还将SVN提交功能集成到我的代码中(使用.ini文件读取特定地址等) 我可以很容易地提交文件,我正在尝试的是我想实现实时日志到我的控制台。有没有办法将日志实现到控制台?不是常规日志,而是应该是实时的提交日志 我正在使用eclipse for mac,我听说过SVNKit,但我对SVN真的很差 提前感谢您提供的任何信息 ---编辑--- 这是从.ini文件读取svn命令的代码 public static String iniSVNOk

我目前正在做一个关于计算的项目。我已经完成了项目的主要部分,还将SVN提交功能集成到我的代码中(使用.ini文件读取特定地址等)

我可以很容易地提交文件,我正在尝试的是我想实现实时日志到我的控制台。有没有办法将日志实现到控制台?不是常规日志,而是应该是实时的提交日志

  • 我正在使用eclipse for mac,我听说过SVNKit,但我对SVN真的很差
提前感谢您提供的任何信息

---编辑---

这是从.ini文件读取svn命令的代码

public static String iniSVNOkut(String deger, String getObje, String fetchObje){

        Ini uzantilariAlIni = null;

        try 
        {
            String uzantiAyarlari = "Uzantilar.ini";    

            try 
            {
                uzantilariAlIni = new Ini(new FileReader(uzantiAyarlari));
            }
            catch (InvalidFileFormatException e)
            {
                System.err.print("Hata InvalidFileFormat : " + e.getMessage() + "\n" );
                e.printStackTrace();
            }
            catch(FileNotFoundException e)
            {
                System.err.print("Hata FileNotFoundException : " + e.getMessage() + "\n" );
                e.printStackTrace();
            }
            catch (IOException e)
            {
                System.err.print("Hata IOException : " + e.getMessage() + "\n" );
                e.printStackTrace();
            }
        return  deger = uzantilariAlIni.get(getObje).fetch(fetchObje);


        } 
        finally 
        {

        }

    }
这就是.ini包含的内容

[svnAdresi]
svnAdresiniAl = svn co http://svn.svnkit.com/repos/svnkit/trunk/ /Users/sample/Documents/workspace/SatirHesaplaGUI/svnTestMAC
这就是我所说的

String svnAdresi;
        svnAdresi = IniFonksiyon.iniSVNOkut(svnAdresi, "svnAdresi", "svnAdresiniAl");
    Runtime cmdCalistir = Runtime.getRuntime();

    try
    {
        Process islem = cmdCalistir.exec(svnAdresi);
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }

如果我正确理解了您的问题,您希望将Subversion提交日志读取到您的控制台应用程序中

最简单的方法是使用

我是这样做的

private static List<SVNLogEntry> logEntryList;

    /*
     * Gets the Subversion log records for the directory
     */
    LogHandler handler = new LogHandler();
    String[] paths = { directory };
    try {
        repository.log(paths, latestRevision, 1L, false, true, handler);
    } catch (SVNException svne) {
        if (svne.getMessage().contains("not found")) {
            logEntryList = new ArrayList<SVNLogEntry>();
        } else {
            CobolSupportLog.logError(
                    "Error while fetching the repository history: "
                            + svne.getMessage(), svne);
            return false;
        }
    }

    logEntryList = handler.getLogEntries();
私有静态列表logEntryList;
/*
*获取目录的Subversion日志记录
*/
LogHandler=新的LogHandler();
字符串[]路径={directory};
试一试{
日志(路径、最新版本、1L、false、true、处理程序);
}捕获(svne){
if(svne.getMessage()包含(“未找到”)){
logEntryList=newarraylist();
}否则{
CobolSupportLog.logError(
“获取存储库历史记录时出错:”
+svne.getMessage(),svne);
返回false;
}
}
logEntryList=handler.getLogEntries();
  • 目录-指向特定目录或模块的字符串
  • latestRevision-Subversion的最大修订号。将latestRevision放在log方法调用中的第二个将按最新顺序返回日志记录
如果您希望日志记录按从1到latestRevision的顺序排列,则1L将排在第二位,latestRevision将排在第三位

  • repository—您已经通过身份验证的Subversion存储库
这是LogHandler

public class LogHandler implements ISVNLogEntryHandler {

    protected static final int REVISION_LIMIT = 5;

    protected List<SVNLogEntry> logEntryList;

    public LogHandler() {
        logEntryList = new ArrayList<SVNLogEntry>();
    }

    public void handleLogEntry(SVNLogEntry logEntry) throws SVNException {
        logEntryList.add(logEntry); 
    }

    public List<SVNLogEntry> getLogEntries() {
        if (logEntryList.size() <= REVISION_LIMIT) {
            return logEntryList;
        } else {
            return logEntryList.subList(0, REVISION_LIMIT);
        }
    }

}  
public类LogHandler实现ISVNLogEntryHandler{
受保护静态最终int版次_限值=5;
受保护列表日志列表;
公共日志处理程序(){
logEntryList=newarraylist();
}
公共无效handleLogEntry(SVNLogEntry日志条目)引发SVNException{
logEntryList.add(logEntry);
}
公共列表getLogEntries(){

如果(logEntryList.size()回答得很好,我只想补充一点,您可以为log()指定修订限制方法。这样它们就不会加载到服务器上并通过网络进行转换。如果存储库有很多修订,这将大大加快您的实现。非常感谢!这正是我需要的,如果我们不指定修订限制,会有多大关系?因为我正在处理的存储库有很多修订revisions@Yesilmen:不,如果您不想,您不必指定修订限制。在我的应用程序中,我只需要最新的5。对于Dmitry,您是正确的。我不记得为什么,但我需要所有修订一段时间,然后我将代码限制为5。我应该在handleLogEntry方法中设置限制。非常感谢,我非常感谢。学习/失败/成功的时间:)还有一个问题,我正在使用svnAdresi=IniFonksiyon.iniSVNOkut(svnAdresi,“svnAdresi”,“svnAdresiniAl”);Runtime cmdcalister=Runtime.getRuntime();try{Process islem=cmdcalister.exec(svnAdresi);}catch(异常e){e.printStackTrace();}要提交,我可以将日志与之集成吗?