From: Robin Rosenberg Date: Fri, 07 Nov 2008 22:07:44 GMT Subject: [EGIT PATCH 7/7] Add decorate option to log program Message-ID: <1226095664-13759-8-git-send-email-robin.rosenberg@dewire.com> In-Reply-To: <1226095664-13759-7-git-send-email-robin.rosenberg@dewire.com> Signed-off-by: Robin Rosenberg --- .../src/org/spearce/jgit/pgm/Log.java | 33 ++++++++++++++++++++ 1 files changed, 33 insertions(+), 0 deletions(-) diff --git a/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/Log.java b/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/Log.java index e3a32c8..bb424d4 100644 --- a/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/Log.java +++ b/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/Log.java @@ -40,11 +40,19 @@ import java.text.DateFormat; import java.text.SimpleDateFormat; +import java.util.Collection; +import java.util.Iterator; import java.util.Locale; +import java.util.Map; +import java.util.Set; import java.util.TimeZone; +import org.kohsuke.args4j.Option; +import org.spearce.jgit.lib.AnyObjectId; import org.spearce.jgit.lib.PersonIdent; +import org.spearce.jgit.lib.Ref; import org.spearce.jgit.revwalk.RevCommit; +import org.spearce.jgit.revwalk.RevWalk; @Command(common = true, usage = "View commit history") class Log extends RevWalkTextBuiltin { @@ -52,14 +60,39 @@ private final DateFormat fmt; + private Map> allRefsByPeeledObjectId; + + @Option(name="--decorate", usage="Show ref names matching commits") + private boolean decorate; + Log() { fmt = new SimpleDateFormat("EEE MMM dd HH:mm:ss yyyy ZZZZZ", Locale.US); } @Override + protected RevWalk createWalk() { + RevWalk ret = super.createWalk(); + if (decorate) + allRefsByPeeledObjectId = getRepository().getAllRefsByPeeledObjectId(); + return ret; + } + + @Override protected void show(final RevCommit c) throws Exception { out.print("commit "); c.getId().copyTo(outbuffer, out); + if (decorate) { + Collection list = allRefsByPeeledObjectId.get(c.copy()); + if (list != null) { + out.print(" ("); + for (Iterator i = list.iterator(); i.hasNext(); ) { + out.print(i.next().getOrigName()); + if (i.hasNext()) + out.print(" "); + } + out.print(")"); + } + } out.println(); final PersonIdent author = c.getAuthorIdent(); -- 1.6.0.3.578.g6a50