diff options
Diffstat (limited to 'org.eclipse.jgit.pgm')
4 files changed, 139 insertions, 11 deletions
diff --git a/org.eclipse.jgit.pgm/META-INF/MANIFEST.MF b/org.eclipse.jgit.pgm/META-INF/MANIFEST.MF index 94651acfb0..796cb7610d 100644 --- a/org.eclipse.jgit.pgm/META-INF/MANIFEST.MF +++ b/org.eclipse.jgit.pgm/META-INF/MANIFEST.MF @@ -36,7 +36,7 @@ Import-Package: org.apache.commons.compress.archivers;version="[1.3,2.0)", org.eclipse.jgit.util;version="[4.0.0,4.1.0)", org.eclipse.jgit.util.io;version="[4.0.0,4.1.0)", org.kohsuke.args4j;version="[2.0.12,2.1.0)", - org.kohsuke.args4j.spi;version="[2.0.12,2.1.0)" + org.kohsuke.args4j.spi;version="[2.0.15,2.1.0)" Bundle-ActivationPolicy: lazy Export-Package: org.eclipse.jgit.console;version="4.0.0", org.eclipse.jgit.pgm;version="4.0.0"; diff --git a/org.eclipse.jgit.pgm/resources/org/eclipse/jgit/pgm/internal/CLIText.properties b/org.eclipse.jgit.pgm/resources/org/eclipse/jgit/pgm/internal/CLIText.properties index 4bbb61392d..f7591fd80b 100644 --- a/org.eclipse.jgit.pgm/resources/org/eclipse/jgit/pgm/internal/CLIText.properties +++ b/org.eclipse.jgit.pgm/resources/org/eclipse/jgit/pgm/internal/CLIText.properties @@ -346,6 +346,7 @@ usage_symbolicVersionForTheProject=Symbolic version for the project usage_tags=fetch all tags usage_notags=do not fetch tags usage_tagMessage=tag message +usage_untrackedFilesMode=show untracked files usage_updateRemoteRefsFromAnotherRepository=Update remote refs from another repository usage_useNameInsteadOfOriginToTrackUpstream=use <name> instead of 'origin' to track upstream usage_checkoutBranchAfterClone=checkout named branch instead of remotes's HEAD diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Status.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Status.java index 2ae950bdc5..12d4208152 100644 --- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Status.java +++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Status.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011, 2013 François Rey <eclipse.org_@_francois_._rey_._name> + * Copyright (C) 2011, 2015 François Rey <eclipse.org_@_francois_._rey_._name> * and other copyright owners as documented in the project's IP log. * * This program and the accompanying materials are made available @@ -61,6 +61,11 @@ import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.pgm.internal.CLIText; import org.kohsuke.args4j.Option; +import org.eclipse.jgit.pgm.opt.UntrackedFilesHandler; + +/** + * Status command + */ @Command(usage = "usage_Status", common = true) class Status extends TextBuiltin { @@ -75,6 +80,9 @@ class Status extends TextBuiltin { @Option(name = "--porcelain", usage = "usage_machineReadableOutput") protected boolean porcelain; + @Option(name = "--untracked-files", aliases = { "-u", "-uno", "-uall" }, usage = "usage_untrackedFilesMode", handler = UntrackedFilesHandler.class) + protected String untrackedFilesMode = "all"; // default value //$NON-NLS-1$ + @Option(name = "--", metaVar = "metaVar_path", multiValued = true) protected List<String> filterPaths; @@ -174,9 +182,12 @@ class Status extends TextBuiltin { } // untracked are always at the end of the list - TreeSet<String> untracked = new TreeSet<String>(status.getUntracked()); - for (String path : untracked) - printPorcelainLine('?', '?', path); + if ("all".equals(untrackedFilesMode)) { //$NON-NLS-1$ + TreeSet<String> untracked = new TreeSet<String>( + status.getUntracked()); + for (String path : untracked) + printPorcelainLine('?', '?', path); + } } private void printPorcelainLine(char x, char y, String path) @@ -240,7 +251,7 @@ class Status extends TextBuiltin { firstHeader = false; } int nbUntracked = untracked.size(); - if (nbUntracked > 0) { + if (nbUntracked > 0 && ("all".equals(untrackedFilesMode))) { //$NON-NLS-1$ if (!firstHeader) printSectionHeader(""); //$NON-NLS-1$ printSectionHeader(CLIText.get().untrackedFiles); @@ -250,11 +261,13 @@ class Status extends TextBuiltin { protected void printSectionHeader(String pattern, Object... arguments) throws IOException { - outw.println(CLIText.formatLine(MessageFormat - .format(pattern, arguments))); - if (!pattern.equals("")) //$NON-NLS-1$ - outw.println(CLIText.formatLine("")); //$NON-NLS-1$ - outw.flush(); + if (!porcelain) { + outw.println(CLIText.formatLine(MessageFormat.format(pattern, + arguments))); + if (!pattern.equals("")) //$NON-NLS-1$ + outw.println(CLIText.formatLine("")); //$NON-NLS-1$ + outw.flush(); + } } protected int printList(Collection<String> list) throws IOException { diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/UntrackedFilesHandler.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/UntrackedFilesHandler.java new file mode 100644 index 0000000000..c4e8b05378 --- /dev/null +++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/UntrackedFilesHandler.java @@ -0,0 +1,114 @@ +/* + * Copyright (C) 2015 Zend Technologies Ltd. and others + * and other copyright owners as documented in the project's IP log. + * + * This program and the accompanying materials are made available + * under the terms of the Eclipse Distribution License v1.0 which + * accompanies this distribution, is reproduced below, and is + * available at http://www.eclipse.org/org/documents/edl-v10.php + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * - Neither the name of the Eclipse Foundation, Inc. nor the + * names of its contributors may be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.eclipse.jgit.pgm.opt; + +import org.kohsuke.args4j.CmdLineException; +import org.kohsuke.args4j.CmdLineParser; +import org.kohsuke.args4j.OptionDef; +import org.kohsuke.args4j.spi.Parameters; +import org.kohsuke.args4j.spi.Setter; +import org.kohsuke.args4j.spi.StringOptionHandler; + +/** + * Special handler for the <code>--untracked-files</code> option of the + * <code>status</code> command. + * + * The following rules apply: + * <ul> + * <li>If no mode is given, i.e. just <code>--untracked-files</code> is passed, + * then it is the same as <code>--untracked-files=all</code></li> + * <li>If the <code>-u</code> alias is passed then it is the same as + * <code>--untracked-files</code></li> + * <li>If the <code>-uno</code> alias is passed then it is the same as + * <code>--untracked-files=no</code></li> + * <li>If the <code>-uall</code> alias is passed then it is the same as + * <code>--untracked-files=all</code></li> + * </ul> + * + * @since 4.0 + */ +public class UntrackedFilesHandler extends StringOptionHandler { + + /** + * @param parser + * The parser to which this handler belongs to. + * @param option + * The annotation. + * @param setter + * Object to be used for setting value. + */ + public UntrackedFilesHandler(CmdLineParser parser, OptionDef option, + Setter<? super String> setter) { + super(parser, option, setter); + } + + @Override + public int parseArguments(Parameters params) throws CmdLineException { + String alias = params.getParameter(-1); + if ("-u".equals(alias)) { //$NON-NLS-1$ + setter.addValue("all"); //$NON-NLS-1$ + return 0; + } else if ("-uno".equals(alias)) { //$NON-NLS-1$ + setter.addValue("no"); //$NON-NLS-1$ + return 0; + } else if ("-uall".equals(alias)) { //$NON-NLS-1$ + setter.addValue("all"); //$NON-NLS-1$ + return 0; + } else if (params.size() == 0) { + setter.addValue("all"); //$NON-NLS-1$ + return 0; + } else if (params.size() == 1) { + String mode = params.getParameter(0); + if ("no".equals(mode) || "all".equals(mode)) { //$NON-NLS-1$ //$NON-NLS-2$ + setter.addValue(mode); + } else { + throw new CmdLineException(owner, String.format( + "Invalid untracked files mode '%s'", mode)); //$NON-NLS-1$ + } + return 1; + } else { + return super.parseArguments(params); + } + } + +}
\ No newline at end of file |