Differences between revisions 4 and 5
Revision 4 as of 2008-09-03 16:15:33
Size: 4555
Editor: 194
Comment:
Revision 5 as of 2008-09-03 16:15:57
Size: 4591
Editor: 194
Comment:
Deletions are marked like this. Additions are marked like this.
Line 85: Line 85:
            commitClient.doCommit(new File[] { wcRoot }, false, "committing changes", null, null, false, false, SVNDepth.INFINITY);             commitClient.doCommit(new File[] { wcRoot }, false, "committing changes", null, null, false,
                                  
false, SVNDepth.INFINITY);

This example demonstrates how you can merge changes to a branch without specifying revisions.

   1 /*
   2  * ====================================================================
   3  * Copyright (c) 2004-2008 TMate Software Ltd.  All rights reserved.
   4  *
   5  * This software is licensed as described in the file COPYING, which
   6  * you should have received as part of this distribution.  The terms
   7  * are also available at http://svnkit.com/license.html.
   8  * If newer versions of this license are posted there, you may use a
   9  * newer version instead, at your option.
  10  * ====================================================================
  11  */
  12 package org.tmatesoft.svn.examples.wc;
  13 
  14 import java.io.File;
  15 import java.io.IOException;
  16 import java.util.Collections;
  17 
  18 import org.tmatesoft.svn.core.SVNCommitInfo;
  19 import org.tmatesoft.svn.core.SVNDepth;
  20 import org.tmatesoft.svn.core.SVNException;
  21 import org.tmatesoft.svn.core.SVNPropertyValue;
  22 import org.tmatesoft.svn.core.SVNURL;
  23 import org.tmatesoft.svn.core.wc.SVNClientManager;
  24 import org.tmatesoft.svn.core.wc.SVNCommitClient;
  25 import org.tmatesoft.svn.core.wc.SVNCopyClient;
  26 import org.tmatesoft.svn.core.wc.SVNCopySource;
  27 import org.tmatesoft.svn.core.wc.SVNDiffClient;
  28 import org.tmatesoft.svn.core.wc.SVNRevision;
  29 import org.tmatesoft.svn.core.wc.SVNRevisionRange;
  30 import org.tmatesoft.svn.core.wc.SVNWCClient;
  31 
  32 
  33 /**
  34  * @version 1.2.0
  35  * @author  TMate Software Ltd.
  36  */
  37 public class Merge {
  38 
  39     public static void main (String[] args) {
  40         //initialize SVNKit to work through file:/// protocol
  41         SamplesUtility.initializeFSFSprotocol();
  42         
  43         File baseDirectory = new File(args[0]);
  44         File reposRoot = new File(baseDirectory, "exampleRepository");
  45         File wcRoot = new File(baseDirectory, "exampleWC");
  46         
  47         try {
  48             //first create a repository and fill it with data
  49             SamplesUtility.createRepository(reposRoot);
  50             SVNCommitInfo info = SamplesUtility.createRepositoryTree(reposRoot);
  51             //print out new revision info
  52             System.out.println(info);
  53 
  54             SVNClientManager clientManager = SVNClientManager.newInstance();
  55             
  56             SVNURL reposURL = SVNURL.fromFile(reposRoot);
  57 
  58             //copy A to A_copy in repository (url-to-url copy)
  59             SVNCopyClient copyClient = clientManager.getCopyClient();
  60             SVNURL A_URL = reposURL.appendPath("A", true);
  61             SVNURL copyTargetURL = reposURL.appendPath("A_copy", true);
  62             SVNCopySource copySource = new SVNCopySource(SVNRevision.UNDEFINED, SVNRevision.HEAD, A_URL); 
  63             info = copyClient.doCopy(new SVNCopySource[] { copySource }, copyTargetURL, false, false, true, 
  64                     "copy A to A_copy", null);
  65             //print out new revision info
  66             System.out.println(info);
  67             
  68             //checkout the entire repository tree
  69             SamplesUtility.checkOutWorkingCopy(reposURL, wcRoot);
  70 
  71             
  72             //now make some changes to the working copy
  73             SamplesUtility.writeToFile(new File(wcRoot, "iota"), "New text appended to 'iota'", true);
  74             SamplesUtility.writeToFile(new File(wcRoot, "A/mu"), "New text in 'mu'", false);
  75             
  76             SVNWCClient wcClient = SVNClientManager.newInstance().getWCClient();
  77             wcClient.doSetProperty(new File(wcRoot, "A/B"), "spam", SVNPropertyValue.create("egg"), false, 
  78                     SVNDepth.EMPTY, null, null);
  79 
  80             //commit local changes
  81             SVNCommitClient commitClient = clientManager.getCommitClient();
  82             commitClient.doCommit(new File[] { wcRoot }, false, "committing changes", null, null, false, 
  83                                   false, SVNDepth.INFINITY);
  84             
  85             //now diff the base revision of the working copy against the repository
  86             SVNDiffClient diffClient = clientManager.getDiffClient();
  87             SVNRevisionRange rangeToMerge = new SVNRevisionRange(SVNRevision.create(1), SVNRevision.HEAD);
  88             
  89             diffClient.doMerge(A_URL, SVNRevision.HEAD, Collections.singleton(rangeToMerge), 
  90                     new File(wcRoot, "A_copy"), SVNDepth.UNKNOWN, true, false, false, false);
  91         } catch (SVNException svne) {
  92             System.out.println(svne.getErrorMessage());
  93             System.exit(1);
  94         } catch (IOException ioe) {
  95             ioe.printStackTrace();
  96             System.exit(1);
  97         }
  98     }
  99 }

Merging from trunk to a branch (last edited 2008-09-04 15:57:55 by 194)