assertEquals(dst, dst3);
    public void testCommitAndUpdate() throws Throwable {        File dst = AllTests.createPlayground();        File dst2 = AllTests.createPlayground();        File dst3 = AllTests.createPlayground();                ISVNWorkspace checkoutWorkspace = createWorkspace(dst);        AllTests.runSVNCommand("checkout", new String[] {getRepositoryURL(), dst2.getAbsolutePath()});        long revision = checkoutWorkspace.checkout(SVNRepositoryLocation.parseURL(getRepositoryURL()), -2, false);        assertEquals(dst, dst2);        assertEquals(1, revision);        assertNotNull(checkoutWorkspace.getLocation());        // make some changes, after each change compare with the same in canonical wc.        // 1. delete dir        AllTests.runSVNAnonCommand("delete", new String[] {new File(dst2, "directory").getAbsolutePath()});        checkoutWorkspace.delete("directory");        assertEquals(dst, dst2);        // 2. change file        modifyFile(new File(dst2, "testFile.txt"), "modified");        modifyFile(new File(dst, "testFile.txt"), "modified");        // 3. add file        createFile(new File(dst2, "added.txt"), "new file");        createFile(new File(dst, "added.txt"), "new file");        AllTests.runSVNAnonCommand("add", new String[] {new File(dst2, "added.txt").getAbsolutePath()});        checkoutWorkspace.add("added.txt", false, false);        assertEquals(dst, dst2);                // commit        revision = checkoutWorkspace.commit("change number one");        assertEquals(2, revision);        revision = checkoutWorkspace.update(-1);        assertEquals(2, revision);                // simple compare.        dst2 = AllTests.createPlayground();        AllTests.runSVNCommand("checkout", new String[] {getRepositoryURL(), dst2.getAbsolutePath()});        assertEquals(dst, dst2);        ISVNWorkspace updateWorkspace = createWorkspace(dst3);        revision = updateWorkspace.checkout(SVNRepositoryLocation.parseURL(getRepositoryURL()), 1, false);        assertEquals(1, revision);                try {            assertEquals(dst2, dst3);            fail("different revisions");        } catch(Throwable th) {}        try {            assertEquals(dst, dst3);            fail("different revisions");        } catch(Throwable th) {}                revision = updateWorkspace.update(ISVNWorkspace.HEAD);        assertEquals(2, revision);        assertEquals(dst3, dst);        assertEquals(dst3, dst2);                // more commit to dst, then compare with updates in dst3, dst2        // 1. delete file        checkoutWorkspace.update(-1);        checkoutWorkspace.delete("added.txt");        // 2. add dir, then add file.        File dir = new File(dst, "new folder");        checkoutWorkspace.add("new folder", true, true);        createFile(new File(dir, "new file.java"), "new file.java");        checkoutWorkspace.add("new folder/new file.java", false, true);        // commit        revision = checkoutWorkspace.commit("- dir added\n- file deleted");        assertEquals(revision, 3);                long headRevision = updateWorkspace.update(-1);        checkoutWorkspace.update(-1);        assertEquals(revision, headRevision);        AllTests.runSVNCommand("update", new String[] {dst2.getAbsolutePath()});                assertEquals(dst, dst2);        assertEquals(dst, dst3);        assertEquals(dst3, dst2);        File toDelete = new File(dst3, "new folder/new file.java");        assertTrue(toDelete.exists());        assertTrue(toDelete.delete());        revision = updateWorkspace.update(ISVNWorkspace.HEAD);        assertEquals(3, revision);                assertEquals(dst, dst3);    }