package org.tmatesoft.svn.core.wc2.hooks;
import org.tmatesoft.svn.core.SVNException;
import org.tmatesoft.svn.core.SVNProperties;
import org.tmatesoft.svn.core.wc.DefaultSVNCommitHandler;
import org.tmatesoft.svn.core.wc2.SvnCommitItem;
/**
* Implementing this interface allows to manage commit log messages for items to be committed in
* a common transaction.
*
* <p>
* The interface defines the only one method which takes the initial log message
* and an array of items that are intended for a commit. For example, an implementor's
* code can process those items and add some generated additional comment to that one
* passed into the method. There could be plenty of scenarios.
*
* @author TMate Software Ltd.
* @version 1.7
* @see DefaultSVNCommitHandler
*/
public interface ISvnCommitHandler {
/**
* Handles the incoming initial log message and items intended for a commit and
* returns a new commit log message.
*
* @param message an initial log message
* @param commitables an array of items to be committed
* @return a new log message string or <code>null</code> to cancel commit operation.
* @throws SVNException
*/
public String getCommitMessage(String message, SvnCommitItem[] commitables) throws SVNException;
/**
* Handles the incoming revision properties and returns filtered revision properties given the paths
* (represented by <code>commitables</code>) collected for committing and the commit log message.
*
* <p>
* Only the returned filtered revision properties will be set on a new committed revision.
*
* @param message log message for commit
* @param commitables paths to commit
* @param revisionProperties initial revision properties
* @return filtered revision properties
* @throws SVNException
*/
public SVNProperties getRevisionProperties(String message, SvnCommitItem[] commitables, SVNProperties revisionProperties) throws SVNException;
}