Mercurial > hg4j
annotate cmdline/org/tmatesoft/hg/console/Outgoing.java @ 653:629a7370554c
Tests for recent changes in HgParentChildMap and RepositoryComparator (outgoing to respect drafts and Issue 47)
| author | Artem Tikhomirov <tikhomirov.artem@gmail.com> | 
|---|---|
| date | Wed, 03 Jul 2013 14:38:30 +0200 | 
| parents | 45dc79e545f5 | 
| children | 
| rev | line source | 
|---|---|
| 30 
de7217a0aa4d
Look up changes in the local repo that are not in the remote
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 1 /* | 
| 74 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
30diff
changeset | 2 * Copyright (c) 2011 TMate Software Ltd | 
| 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
30diff
changeset | 3 * | 
| 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
30diff
changeset | 4 * This program is free software; you can redistribute it and/or modify | 
| 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
30diff
changeset | 5 * it under the terms of the GNU General Public License as published by | 
| 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
30diff
changeset | 6 * the Free Software Foundation; version 2 of the License. | 
| 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
30diff
changeset | 7 * | 
| 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
30diff
changeset | 8 * This program is distributed in the hope that it will be useful, | 
| 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
30diff
changeset | 9 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
30diff
changeset | 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 
| 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
30diff
changeset | 11 * GNU General Public License for more details. | 
| 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
30diff
changeset | 12 * | 
| 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
30diff
changeset | 13 * For information on how to redistribute this software under | 
| 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
30diff
changeset | 14 * the terms of a license other than GNU General Public License | 
| 102 
a3a2e5deb320
Updated contact address to support@hg4j.com
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
98diff
changeset | 15 * contact TMate Software at support@hg4j.com | 
| 30 
de7217a0aa4d
Look up changes in the local repo that are not in the remote
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 16 */ | 
| 74 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
30diff
changeset | 17 package org.tmatesoft.hg.console; | 
| 30 
de7217a0aa4d
Look up changes in the local repo that are not in the remote
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 18 | 
| 
de7217a0aa4d
Look up changes in the local repo that are not in the remote
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 19 import java.util.Collection; | 
| 299 
45dc79e545f5
Recognize flag options (options with no arguments) in command line sample apps
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
215diff
changeset | 20 import java.util.Collections; | 
| 30 
de7217a0aa4d
Look up changes in the local repo that are not in the remote
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 21 import java.util.List; | 
| 
de7217a0aa4d
Look up changes in the local repo that are not in the remote
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 22 | 
| 206 
63c9fed4369e
Sample command line tools for incoming/outgoing to use commands
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
192diff
changeset | 23 import org.tmatesoft.hg.core.HgOutgoingCommand; | 
| 
63c9fed4369e
Sample command line tools for incoming/outgoing to use commands
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
192diff
changeset | 24 import org.tmatesoft.hg.core.HgRepoFacade; | 
| 74 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
30diff
changeset | 25 import org.tmatesoft.hg.core.Nodeid; | 
| 171 
2c3e96674e2a
Towards outgoing changes - initial detection logic, get connected with remote repo stub
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 26 import org.tmatesoft.hg.repo.HgLookup; | 
| 
2c3e96674e2a
Towards outgoing changes - initial detection logic, get connected with remote repo stub
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 27 import org.tmatesoft.hg.repo.HgRemoteRepository; | 
| 74 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
30diff
changeset | 28 | 
| 30 
de7217a0aa4d
Look up changes in the local repo that are not in the remote
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 29 | 
| 
de7217a0aa4d
Look up changes in the local repo that are not in the remote
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 30 /** | 
| 206 
63c9fed4369e
Sample command line tools for incoming/outgoing to use commands
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
192diff
changeset | 31 * <em>hg outgoing</em> | 
| 74 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
30diff
changeset | 32 * | 
| 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
30diff
changeset | 33 * @author Artem Tikhomirov | 
| 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
30diff
changeset | 34 * @author TMate Software Ltd. | 
| 30 
de7217a0aa4d
Look up changes in the local repo that are not in the remote
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 35 */ | 
| 
de7217a0aa4d
Look up changes in the local repo that are not in the remote
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 36 public class Outgoing { | 
| 
de7217a0aa4d
Look up changes in the local repo that are not in the remote
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 37 | 
| 
de7217a0aa4d
Look up changes in the local repo that are not in the remote
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 38 public static void main(String[] args) throws Exception { | 
| 299 
45dc79e545f5
Recognize flag options (options with no arguments) in command line sample apps
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
215diff
changeset | 39 Options cmdLineOpts = Options.parse(args, Collections.<String>emptySet()); | 
| 206 
63c9fed4369e
Sample command line tools for incoming/outgoing to use commands
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
192diff
changeset | 40 HgRepoFacade hgRepo = new HgRepoFacade(); | 
| 
63c9fed4369e
Sample command line tools for incoming/outgoing to use commands
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
192diff
changeset | 41 if (!hgRepo.init(cmdLineOpts.findRepository())) { | 
| 
63c9fed4369e
Sample command line tools for incoming/outgoing to use commands
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
192diff
changeset | 42 System.err.printf("Can't find repository in: %s\n", hgRepo.getRepository().getLocation()); | 
| 30 
de7217a0aa4d
Look up changes in the local repo that are not in the remote
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 43 return; | 
| 
de7217a0aa4d
Look up changes in the local repo that are not in the remote
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 44 } | 
| 206 
63c9fed4369e
Sample command line tools for incoming/outgoing to use commands
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
192diff
changeset | 45 // XXX perhaps, HgRepoFacade shall get detectRemote() analog (to get remote server with respect of facade's repo) | 
| 
63c9fed4369e
Sample command line tools for incoming/outgoing to use commands
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
192diff
changeset | 46 HgRemoteRepository hgRemote = new HgLookup().detectRemote(cmdLineOpts.getSingle(""), hgRepo.getRepository()); | 
| 181 
cd3371670f0b
Refactor incoming and outgoing code to be shared with RepositoryComparator. Placeholders for in/out commands. Refactor common remote lookup code
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
178diff
changeset | 47 if (hgRemote.isInvalid()) { | 
| 
cd3371670f0b
Refactor incoming and outgoing code to be shared with RepositoryComparator. Placeholders for in/out commands. Refactor common remote lookup code
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
178diff
changeset | 48 System.err.printf("Remote repository %s is not valid", hgRemote.getLocation()); | 
| 
cd3371670f0b
Refactor incoming and outgoing code to be shared with RepositoryComparator. Placeholders for in/out commands. Refactor common remote lookup code
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
178diff
changeset | 49 return; | 
| 172 
87f40938c9b2
Configuration handling out of HgLookup (bad idea to use URL to pass keys)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
171diff
changeset | 50 } | 
| 206 
63c9fed4369e
Sample command line tools for incoming/outgoing to use commands
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
192diff
changeset | 51 // | 
| 
63c9fed4369e
Sample command line tools for incoming/outgoing to use commands
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
192diff
changeset | 52 HgOutgoingCommand cmd = hgRepo.createOutgoingCommand(); | 
| 
63c9fed4369e
Sample command line tools for incoming/outgoing to use commands
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
192diff
changeset | 53 cmd.against(hgRemote); | 
| 171 
2c3e96674e2a
Towards outgoing changes - initial detection logic, get connected with remote repo stub
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 54 | 
| 
2c3e96674e2a
Towards outgoing changes - initial detection logic, get connected with remote repo stub
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 55 // find all local children of commonKnown | 
| 215 
41a778e3fd31
Issue 5: Facilities for progress and cancellation. More specific exceptions. Exceptions from callbacks as RuntimeException
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
206diff
changeset | 56 List<Nodeid> result = cmd.executeLite(); | 
| 185 
c6fa4dbfc458
Complete Outgoing cmdline, with both lite (revisions) and complete (changeset) information dump
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
181diff
changeset | 57 dump("Lite", result); | 
| 192 
e5407b5a586a
Incoming and Outgoing commands are alive
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
185diff
changeset | 58 // | 
| 
e5407b5a586a
Incoming and Outgoing commands are alive
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
185diff
changeset | 59 // | 
| 185 
c6fa4dbfc458
Complete Outgoing cmdline, with both lite (revisions) and complete (changeset) information dump
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
181diff
changeset | 60 System.out.println("Full"); | 
| 
c6fa4dbfc458
Complete Outgoing cmdline, with both lite (revisions) and complete (changeset) information dump
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
181diff
changeset | 61 // show all, starting from next to common | 
| 206 
63c9fed4369e
Sample command line tools for incoming/outgoing to use commands
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
192diff
changeset | 62 final ChangesetDumpHandler h = new ChangesetDumpHandler(hgRepo.getRepository()); | 
| 
63c9fed4369e
Sample command line tools for incoming/outgoing to use commands
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
192diff
changeset | 63 h.complete(cmdLineOpts.getBoolean("--debug")).verbose(cmdLineOpts.getBoolean("-v", "--verbose")); | 
| 
63c9fed4369e
Sample command line tools for incoming/outgoing to use commands
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
192diff
changeset | 64 cmd.executeFull(h); | 
| 
63c9fed4369e
Sample command line tools for incoming/outgoing to use commands
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
192diff
changeset | 65 h.done(); | 
| 171 
2c3e96674e2a
Towards outgoing changes - initial detection logic, get connected with remote repo stub
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 66 } | 
| 192 
e5407b5a586a
Incoming and Outgoing commands are alive
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
185diff
changeset | 67 | 
| 206 
63c9fed4369e
Sample command line tools for incoming/outgoing to use commands
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
192diff
changeset | 68 // public static class ChangesetFormatter { | 
| 
63c9fed4369e
Sample command line tools for incoming/outgoing to use commands
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
192diff
changeset | 69 // private final StringBuilder sb = new StringBuilder(1024); | 
| 
63c9fed4369e
Sample command line tools for incoming/outgoing to use commands
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
192diff
changeset | 70 // | 
| 
63c9fed4369e
Sample command line tools for incoming/outgoing to use commands
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
192diff
changeset | 71 // public CharSequence simple(int revisionNumber, Nodeid nodeid, RawChangeset cset) { | 
| 
63c9fed4369e
Sample command line tools for incoming/outgoing to use commands
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
192diff
changeset | 72 // sb.setLength(0); | 
| 
63c9fed4369e
Sample command line tools for incoming/outgoing to use commands
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
192diff
changeset | 73 // sb.append(String.format("changeset: %d:%s\n", revisionNumber, nodeid.toString())); | 
| 
63c9fed4369e
Sample command line tools for incoming/outgoing to use commands
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
192diff
changeset | 74 // sb.append(String.format("user: %s\n", cset.user())); | 
| 
63c9fed4369e
Sample command line tools for incoming/outgoing to use commands
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
192diff
changeset | 75 // sb.append(String.format("date: %s\n", cset.dateString())); | 
| 
63c9fed4369e
Sample command line tools for incoming/outgoing to use commands
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
192diff
changeset | 76 // sb.append(String.format("comment: %s\n\n", cset.comment())); | 
| 
63c9fed4369e
Sample command line tools for incoming/outgoing to use commands
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
192diff
changeset | 77 // return sb; | 
| 
63c9fed4369e
Sample command line tools for incoming/outgoing to use commands
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
192diff
changeset | 78 // } | 
| 
63c9fed4369e
Sample command line tools for incoming/outgoing to use commands
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
192diff
changeset | 79 // } | 
| 171 
2c3e96674e2a
Towards outgoing changes - initial detection logic, get connected with remote repo stub
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 80 | 
| 30 
de7217a0aa4d
Look up changes in the local repo that are not in the remote
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 81 | 
| 206 
63c9fed4369e
Sample command line tools for incoming/outgoing to use commands
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
192diff
changeset | 82 static void dump(String s, Collection<Nodeid> c) { | 
| 30 
de7217a0aa4d
Look up changes in the local repo that are not in the remote
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 83 System.out.println(s); | 
| 
de7217a0aa4d
Look up changes in the local repo that are not in the remote
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 84 for (Nodeid n : c) { | 
| 
de7217a0aa4d
Look up changes in the local repo that are not in the remote
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 85 System.out.println(n); | 
| 
de7217a0aa4d
Look up changes in the local repo that are not in the remote
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 86 } | 
| 
de7217a0aa4d
Look up changes in the local repo that are not in the remote
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 87 } | 
| 
de7217a0aa4d
Look up changes in the local repo that are not in the remote
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 88 } | 
