/* * ==================================================================== * Copyright (c) 2004-2012 TMate Software Ltd. All rights reserved. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms * are also available at http://svnkit.com/license.html * If newer versions of this license are posted there, you may use a * newer version instead, at your option. * ==================================================================== */ package org.tmatesoft.svn.core.wc; import org.tmatesoft.svn.core.SVNException; import org.tmatesoft.svn.core.SVNProperties; import org.tmatesoft.svn.core.internal.wc.admin.SVNAdminArea; import org.tmatesoft.svn.core.internal.wc.admin.SVNLog; import org.tmatesoft.svn.core.wc2.ISvnMerger; /** * <b>ISVNMerger</b> is the merge driver interface used by <code>SVNKit</code> in merging operations. * * <p> * Merge drivers are created by a merger factory implementing the * {@link ISVNMergerFactory} interface. Read more about that interface to * find out how to get a default implementation of <code>ISVNMerger</code>. * * Note: methods of this interface will only be called for Subversion 1.6 or older * working copies. To provide custom merge implementation for Subversion 1.7 * working copies implement {@link ISvnMerger} interface. * * @version 1.3 * @since 1.2 * @author TMate Software Ltd. */ public interface ISVNMerger { /** * Performs a text merge. * * @param files files invoked in merge * @param dryRun if <span class="javakeyword">true</span>, merge is simulated only, no real * changes are done * @param options merge options to take into account * @return result of merging * @throws SVNException */ public SVNMergeResult mergeText(SVNMergeFileSet files, boolean dryRun, SVNDiffOptions options) throws SVNException; /** * Given <code>adminArea</code>/<code>localPath</code> and property changes (<code>propDiff</code>) based * on <code>serverBaseProps</code>, merges the changes into the working copy. * * @param localPath working copy path base name * @param workingProperties working properties * @param baseProperties pristine properties * @param serverBaseProps properties that come from the server * @param propDiff property changes that come from the repository * @param adminArea admin area object representing the <code>.svn<./code> admin area of * the target which properties are merged * @param log logger * @param baseMerge if <span class="javakeyword">false</span>, then changes only working properties; * otherwise, changes both the base and working properties * @param dryRun if <span class="javakeyword">true</span>, merge is simulated only, no real * changes are done * @return result of merging * @throws SVNException */ public SVNMergeResult mergeProperties(String localPath, SVNProperties workingProperties, SVNProperties baseProperties, SVNProperties serverBaseProps, SVNProperties propDiff, SVNAdminArea adminArea, SVNLog log, boolean baseMerge, boolean dryRun) throws SVNException; }