summaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit.pgm
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.jgit.pgm')
-rw-r--r--org.eclipse.jgit.pgm/META-INF/MANIFEST.MF2
-rw-r--r--org.eclipse.jgit.pgm/resources/org/eclipse/jgit/pgm/internal/CLIText.properties1
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Status.java33
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/UntrackedFilesHandler.java114
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