⇤ ← Revision 1 as of 2008-09-03 14:28:59
Size: 4235
Comment:
|
Size: 4610
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 58: | Line 58: |
//first create a repository and fill it with data | //1. first create a repository and fill it with data |
Line 60: | Line 60: |
//2. populate the repository with the greek tree in a single transaction | |
Line 61: | Line 62: |
//pring out the commit information | |
Line 63: | Line 65: |
//checkout the entire repository tree | //3. checkout the entire repository tree |
Line 67: | Line 69: |
//now make some changes to the working copy | //4. now make some changes to the working copy |
Line 73: | Line 75: |
//set some property on a working copy directory | |
Line 76: | Line 79: |
//now run diff the working copy against the repository | //5. now run diff the working copy against the repository |
Line 95: | Line 98: |
What we do with the SVNDiffClient here in this example is equivalent to calling the command line client with the following parameters: {{{ $svn diff -rHEAD }}} |
This is an example of performing diff on an entire working copy against the repository. Below we will enumerate the main steps performed by this example program, and reflect those steps in code comments as well, so that you could keep track of what the program does.
- We create a brand-new repository.
Then populate it with a greek tree not using file system directories and files. All this initializing work is done with the help of the utility class called SamplesUtility.
- Then checkout a working copy.
- Then make text changes in two files and set a property on a directory.
- Then we diff our working copy against the repository.
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 import java.io.File;
14 import java.io.IOException;
15 import org.tmatesoft.svn.core.SVNCommitInfo;
16 import org.tmatesoft.svn.core.SVNDepth;
17 import org.tmatesoft.svn.core.SVNException;
18 import org.tmatesoft.svn.core.SVNPropertyValue;
19 import org.tmatesoft.svn.core.SVNURL;
20 import org.tmatesoft.svn.core.wc.SVNClientManager;
21 import org.tmatesoft.svn.core.wc.SVNDiffClient;
22 import org.tmatesoft.svn.core.wc.SVNRevision;
23 import org.tmatesoft.svn.core.wc.SVNWCClient;
24 /**
25 * This examples demonstrate how you can run WORKING:HEAD diff.
26 *
27 * @version 1.2.0
28 * @author TMate Software Ltd.
29 */
30 public class DiffWCToRepository {
31
32 /**
33 * Pass the absolute path of the base directory where all example data will be created in
34 * arg[0]. The sample will create:
35 *
36 * - arg[0]/exampleRepository - repository with some test data
37 * - arg[0]/exampleWC - working copy checked out from exampleRepository
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 //1. first create a repository and fill it with data
49 SamplesUtility.createRepository(reposRoot);
50 //2. populate the repository with the greek tree in a single transaction
51 SVNCommitInfo info = SamplesUtility.createRepositoryTree(reposRoot);
52 //pring out the commit information
53 System.out.println(info);
54
55 //3. checkout the entire repository tree
56 SVNURL reposURL = SVNURL.fromFile(reposRoot);
57 SamplesUtility.checkOutWorkingCopy(reposURL, wcRoot);
58
59 //4. now make some changes to the working copy
60 SamplesUtility.writeToFile(new File(wcRoot, "iota"), "New text appended to 'iota'", true);
61 SamplesUtility.writeToFile(new File(wcRoot, "A/mu"), "New text in 'mu'", false);
62
63 SVNClientManager clientManager = SVNClientManager.newInstance();
64 SVNWCClient wcClient = SVNClientManager.newInstance().getWCClient();
65 //set some property on a working copy directory
66 wcClient.doSetProperty(new File(wcRoot, "A/B"), "spam", SVNPropertyValue.create("egg"), false,
67 SVNDepth.EMPTY, null, null);
68
69 //5. now run diff the working copy against the repository
70 SVNDiffClient diffClient = clientManager.getDiffClient();
71 /*
72 * This corresponds to 'svn diff -rHEAD'.
73 */
74 diffClient.doDiff(wcRoot, SVNRevision.UNDEFINED, SVNRevision.WORKING, SVNRevision.HEAD,
75 SVNDepth.INFINITY, true, System.out, null);
76 } catch (SVNException svne) {
77 System.out.println(svne.getErrorMessage());
78 System.exit(1);
79 } catch (IOException ioe) {
80 ioe.printStackTrace();
81 System.exit(1);
82 }
83 }
84
85 }
What we do with the SVNDiffClient here in this example is equivalent to calling the command line client with the following parameters:
$svn diff -rHEAD