1

私は現在、計算に関するプロジェクトに取り組んでいます。プロジェクトの主要部分を実行しました。また、SVNコミット機能をコードに統合しました(.iniファイルを使用して特定のアドレスを読み取るなど)。

ファイルを簡単にコミットできます。私が試しているのは、コンソールにリアルタイムログを実装したいということです。ログをコンソールに実装する方法はありますか?一般的なログではなく、リアルタイムである必要があるコミットログ。

  • 私はMac用のEclipseを使用しています。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();
    }
4

1 に答える 1

2

私があなたの質問を正しく理解しているなら、あなたはコンソールアプリケーションにSubversionコミットログを読みたいと思うでしょう。

最も簡単な方法は、SVNKitを使用することです。

これが私がそれをした方法です。

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();
  • directory-特定のディレクトリまたはモジュールを指す文字列
  • latestRevision-Subversionからの最大のリビジョン番号。logメソッド呼び出しの2番目にlatestRevisionを配置すると、ログレコードが最新の順序で返されます。

ログレコードを1からlatestRevisionまで順番に並べたい場合は、1Lが2番目に配置され、latestRevisionが3番目に配置されます。

  • リポジトリ-すでに認証されている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);
        }
    }

}  
于 2012-07-02T16:37:37.717 に答える