Currently, only --list option is supported with --global, --system, --local and --file switches. Change-Id: I9b179b162996520e95c4e001dccd65c566a4bd27 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>tags/v2.0.0.201206130900-r
/* | |||||
* Copyright (C) 2012, Matthias Sohn <matthias.sohn@sap.com> | |||||
* 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; | |||||
import static org.junit.Assert.assertArrayEquals; | |||||
import org.eclipse.jgit.api.Git; | |||||
import org.eclipse.jgit.lib.CLIRepositoryTestCase; | |||||
import org.junit.Before; | |||||
import org.junit.Test; | |||||
public class ConfigTest extends CLIRepositoryTestCase { | |||||
@Override | |||||
@Before | |||||
public void setUp() throws Exception { | |||||
super.setUp(); | |||||
new Git(db).commit().setMessage("initial commit").call(); | |||||
} | |||||
@Test | |||||
public void testListConfig() throws Exception { | |||||
String[] output = execute("git config --list"); | |||||
assertArrayEquals("expected default configuration", // | |||||
new String[] { "core.autocrlf=false", // | |||||
"core.filemode=true", // | |||||
"core.logallrefupdates=true", // | |||||
"core.repositoryformatversion=0", // | |||||
"" /* ends with LF (last line empty) */}, output); | |||||
} | |||||
} |
org.eclipse.jgit.pgm.Checkout | org.eclipse.jgit.pgm.Checkout | ||||
org.eclipse.jgit.pgm.Clone | org.eclipse.jgit.pgm.Clone | ||||
org.eclipse.jgit.pgm.Commit | org.eclipse.jgit.pgm.Commit | ||||
org.eclipse.jgit.pgm.Config | |||||
org.eclipse.jgit.pgm.Daemon | org.eclipse.jgit.pgm.Daemon | ||||
org.eclipse.jgit.pgm.Diff | org.eclipse.jgit.pgm.Diff | ||||
org.eclipse.jgit.pgm.DiffTree | org.eclipse.jgit.pgm.DiffTree |
usage_forceCheckout=when switching branches, proceed even if the index or the working tree differs from HEAD | usage_forceCheckout=when switching branches, proceed even if the index or the working tree differs from HEAD | ||||
usage_forceCreateBranchEvenExists=force create branch even exists | usage_forceCreateBranchEvenExists=force create branch even exists | ||||
usage_forceReplacingAnExistingTag=force replacing an existing tag | usage_forceReplacingAnExistingTag=force replacing an existing tag | ||||
usage_getAndSetOptions=Get and set repository or global options | |||||
usage_hostnameOrIpToListenOn=hostname (or ip) to listen on | usage_hostnameOrIpToListenOn=hostname (or ip) to listen on | ||||
usage_indexFileFormatToCreate=index file format to create | usage_indexFileFormatToCreate=index file format to create | ||||
usage_ignoreWhitespace=ignore all whitespace | usage_ignoreWhitespace=ignore all whitespace |
/* | |||||
* Copyright (C) 2012, Tomasz Zarna <Tomasz.Zarna@pl.ibm.com> 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; | |||||
import java.io.File; | |||||
import java.io.IOException; | |||||
import java.util.Set; | |||||
import org.eclipse.jgit.errors.ConfigInvalidException; | |||||
import org.eclipse.jgit.errors.NotSupportedException; | |||||
import org.eclipse.jgit.lib.Constants; | |||||
import org.eclipse.jgit.lib.StoredConfig; | |||||
import org.eclipse.jgit.storage.file.FileBasedConfig; | |||||
import org.eclipse.jgit.util.FS; | |||||
import org.eclipse.jgit.util.SystemReader; | |||||
import org.kohsuke.args4j.Option; | |||||
@Command(common = true, usage = "usage_getAndSetOptions") | |||||
class Config extends TextBuiltin { | |||||
@Option(name = "--system") | |||||
private boolean system; | |||||
@Option(name = "--global") | |||||
private boolean global; | |||||
@Option(name = "--local") | |||||
private boolean local; | |||||
@Option(name = "--list", aliases = { "-l" }) | |||||
private boolean list; | |||||
@Option(name = "--file", aliases = { "-f" }) | |||||
private File configFile; | |||||
@Override | |||||
protected void run() throws Exception { | |||||
if (list) | |||||
list(); | |||||
else | |||||
throw new NotSupportedException( | |||||
"only --list option is currently supported"); | |||||
} | |||||
private void list() throws IOException, ConfigInvalidException { | |||||
final FS fs = getRepository().getFS(); | |||||
if (configFile != null) { | |||||
list(new FileBasedConfig(configFile, fs)); | |||||
return; | |||||
} | |||||
if (system || isListAll()) | |||||
list(SystemReader.getInstance().openSystemConfig(null, fs)); | |||||
if (global || isListAll()) | |||||
list(SystemReader.getInstance().openUserConfig(null, fs)); | |||||
if (local || isListAll()) | |||||
list(new FileBasedConfig(fs.resolve(getRepository().getDirectory(), | |||||
Constants.CONFIG), fs)); | |||||
} | |||||
private boolean isListAll() { | |||||
return !system && !global && !local && configFile == null; | |||||
} | |||||
private void list(StoredConfig config) throws IOException, | |||||
ConfigInvalidException { | |||||
config.load(); | |||||
Set<String> sections = config.getSections(); | |||||
for (String section : sections) { | |||||
Set<String> names = config.getNames(section); | |||||
for (String name : names) { | |||||
for (String value : config.getStringList(section, null, name)) | |||||
out.println(section + "." + name + "=" + value); | |||||
} | |||||
if (names.isEmpty()) { | |||||
for (String subsection : config.getSubsections(section)) { | |||||
names = config.getNames(section, subsection); | |||||
for (String name : names) { | |||||
for (String value : config.getStringList(section, | |||||
subsection, name)) | |||||
out.println(section + "." + subsection + "." | |||||
+ name + "=" + value); | |||||
} | |||||
} | |||||
} | |||||
} | |||||
} | |||||
} |