Unsure about how to use javahl merge functions

View: New views
2 Messages — Rating Filter:   Alert me  

Unsure about how to use javahl merge functions

by Daniel Pötzl :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi,

I'm writing a tool using the javahl API. What I need it to do is merge
a branch into a working copy that is equal to the latest trunk.
Basically, it should
behave like the svn cli client with the invocation 'svn merge <Branch-URL>',
the current directory being the working copy.

However, my attempts on using the merge functions of the javahl API for
this have
so far been unsuccessful. The changes in the trunk always get
overwritten by the
changes in the branch (they are on the same line of the file). But I
want it to
generate a conflict and create *.working, etc. files and put conflict markers
into the files.

How would one go about this? Is this even possible using the javahl-API?

Greetings

------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=1065&dsMessageId=2414441

To unsubscribe from this discussion, e-mail: [users-unsubscribe@...].

Re: Unsure about how to use javahl merge functions

by Mark Phippard-3 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Wed, Nov 4, 2009 at 11:02 AM, Daniel Pötzl
<e0625249@...> wrote:

> I'm writing a tool using the javahl API. What I need it to do is merge
> a branch into a working copy that is equal to the latest trunk.
> Basically, it should
> behave like the svn cli client with the invocation 'svn merge <Branch-URL>',
> the current directory being the working copy.
>
> However, my attempts on using the merge functions of the javahl API for
> this have
> so far been unsuccessful. The changes in the trunk always get
> overwritten by the
> changes in the branch (they are on the same line of the file). But I
> want it to
> generate a conflict and create *.working, etc. files and put conflict markers
> into the files.
>
> How would one go about this? Is this even possible using the javahl-API?

You would use this method:

    /**
     * Merge changes from two paths into a new local path.
     *
     * @param path1          first path or url
     * @param revision1      first revision
     * @param path2          second path or url
     * @param revision2      second revision
     * @param localPath      target local path
     * @param force          overwrite local changes
     * @param depth          how deep to traverse into subdirectories
     * @param ignoreAncestry ignore if files are not related
     * @param dryRun         do not change anything
     * @param recordOnly     record mergeinfo but do not run merge
     * @throws ClientException
     * @since 1.5
     */
    void merge(String path1, Revision revision1, String path2,
               Revision revision2, String localPath, boolean force, int depth,
               boolean ignoreAncestry, boolean dryRun, boolean recordOnly)
            throws ClientException;


In your case both path1 and path2 will be the URL of the branch you
are merging.  Since you want Subversion's merge tracking to figure out
what to merge, you pass NULL for revision1 and revision2.  localPath
is your the working copy that you are merging into and the rest of
options are just based on what you want to do.  Typically it would be:

force = false
depth = Depth.unknown
ignoreAncestry = false
dryRun = false
recordOnly = false

There would also be cases you would want to use this API:


    /**
     * Perform a reintegration merge of path into localPath.
     * localPath must be a single-revision, infinite depth,
     * pristine, unswitched working copy -- in other words, it must
     * reflect a single revision tree, the "target".  The mergeinfo on
     * path must reflect that all of the target has been merged into it.
     * Then this behaves like a merge from the target's URL to the
     * localPath.
     *
     * The depth of the merge is always infinity.
     * @param path          path or url
     * @param pegRevision   revision to interpret path
     * @param localPath     target local path
     * @param dryRun        do not change anything
     * @throws ClientException
     * @since 1.5
     */
    void mergeReintegrate(String path, Revision pegRevision,
                          String localPath, boolean dryRun)
             throws ClientException;

All of these are used in the CollabNet Merge Client for Eclipse.

http://desktop-eclipse.open.collab.net/cn-project-pages/Getting%20started/Merge%20Client/

--
Thanks

Mark Phippard
http://markphip.blogspot.com/

------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=1065&dsMessageId=2414445

To unsubscribe from this discussion, e-mail: [users-unsubscribe@...].