Remove System.out.println from RevWalkFilterTest
[egit/chris.git] / org.spearce.jgit.pgm / src / org / spearce / jgit / pgm / Log.java
blobbb424d4dcd3c40410da31d9d1800c26b2057981e
1 /*
2 * Copyright (C) 2006, Robin Rosenberg <robin.rosenberg@dewire.com>
3 * Copyright (C) 2008, Shawn O. Pearce <spearce@spearce.org>
5 * All rights reserved.
7 * Redistribution and use in source and binary forms, with or
8 * without modification, are permitted provided that the following
9 * conditions are met:
11 * - Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
14 * - Redistributions in binary form must reproduce the above
15 * copyright notice, this list of conditions and the following
16 * disclaimer in the documentation and/or other materials provided
17 * with the distribution.
19 * - Neither the name of the Git Development Community nor the
20 * names of its contributors may be used to endorse or promote
21 * products derived from this software without specific prior
22 * written permission.
24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
25 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
26 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
27 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
28 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
29 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
30 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
31 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
32 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
33 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
34 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
35 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
36 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39 package org.spearce.jgit.pgm;
41 import java.text.DateFormat;
42 import java.text.SimpleDateFormat;
43 import java.util.Collection;
44 import java.util.Iterator;
45 import java.util.Locale;
46 import java.util.Map;
47 import java.util.Set;
48 import java.util.TimeZone;
50 import org.kohsuke.args4j.Option;
51 import org.spearce.jgit.lib.AnyObjectId;
52 import org.spearce.jgit.lib.PersonIdent;
53 import org.spearce.jgit.lib.Ref;
54 import org.spearce.jgit.revwalk.RevCommit;
55 import org.spearce.jgit.revwalk.RevWalk;
57 @Command(common = true, usage = "View commit history")
58 class Log extends RevWalkTextBuiltin {
59 private final TimeZone myTZ = TimeZone.getDefault();
61 private final DateFormat fmt;
63 private Map<AnyObjectId, Set<Ref>> allRefsByPeeledObjectId;
65 @Option(name="--decorate", usage="Show ref names matching commits")
66 private boolean decorate;
68 Log() {
69 fmt = new SimpleDateFormat("EEE MMM dd HH:mm:ss yyyy ZZZZZ", Locale.US);
72 @Override
73 protected RevWalk createWalk() {
74 RevWalk ret = super.createWalk();
75 if (decorate)
76 allRefsByPeeledObjectId = getRepository().getAllRefsByPeeledObjectId();
77 return ret;
80 @Override
81 protected void show(final RevCommit c) throws Exception {
82 out.print("commit ");
83 c.getId().copyTo(outbuffer, out);
84 if (decorate) {
85 Collection<Ref> list = allRefsByPeeledObjectId.get(c.copy());
86 if (list != null) {
87 out.print(" (");
88 for (Iterator<Ref> i = list.iterator(); i.hasNext(); ) {
89 out.print(i.next().getOrigName());
90 if (i.hasNext())
91 out.print(" ");
93 out.print(")");
96 out.println();
98 final PersonIdent author = c.getAuthorIdent();
99 out.print("Author: ");
100 out.print(author.getName());
101 out.print(" <");
102 out.print(author.getEmailAddress());
103 out.print(">");
104 out.println();
106 final TimeZone authorTZ = author.getTimeZone();
107 fmt.setTimeZone(authorTZ != null ? authorTZ : myTZ);
108 out.print("Date: ");
109 out.print(fmt.format(author.getWhen()));
110 out.println();
112 out.println();
113 final String[] lines = c.getFullMessage().split("\n");
114 for (final String s : lines) {
115 out.print(" ");
116 out.print(s);
117 out.println();
120 out.println();
121 out.flush();