From 6a822f0ebfd8b37bffbb680fa05b8783701ae15e Mon Sep 17 00:00:00 2001 From: "Shawn O. Pearce" Date: Wed, 23 Jun 2010 10:13:55 -0700 Subject: [PATCH] Remove RepositoryConfig and use FileBasedConfig instead Change the Repository API to use straight-up FileBasedConfig. This lets us remove the subclass RepositoryConfig and stop having a specialized configuration type for repository, letting us instead focus the config type heirarchy on type-of-storage rather than use. Change-Id: I7236800e8090624453a89cb0c7a9a632702691c6 Signed-off-by: Shawn O. Pearce --- .../jgit/http/test/AdvertiseErrorTest.java | 4 +- .../jgit/http/test/HookMessageTest.java | 4 +- .../http/test/SmartClientSmartServerTest.java | 4 +- .../org/eclipse/jgit/lib/ObjectWriter.java | 2 +- .../src/org/eclipse/jgit/lib/Repository.java | 8 +- .../eclipse/jgit/lib/RepositoryConfig.java | 135 ------------------ 6 files changed, 11 insertions(+), 146 deletions(-) delete mode 100644 org.eclipse.jgit/src/org/eclipse/jgit/lib/RepositoryConfig.java diff --git a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/AdvertiseErrorTest.java b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/AdvertiseErrorTest.java index 47d7806a1..d8268bf93 100644 --- a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/AdvertiseErrorTest.java +++ b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/AdvertiseErrorTest.java @@ -59,10 +59,10 @@ import org.eclipse.jgit.http.test.util.HttpTestCase; import org.eclipse.jgit.junit.TestRepository; import org.eclipse.jgit.lib.Constants; +import org.eclipse.jgit.lib.FileBasedConfig; import org.eclipse.jgit.lib.NullProgressMonitor; import org.eclipse.jgit.lib.ObjectId; import org.eclipse.jgit.lib.Repository; -import org.eclipse.jgit.lib.RepositoryConfig; import org.eclipse.jgit.revwalk.RevBlob; import org.eclipse.jgit.revwalk.RevCommit; import org.eclipse.jgit.transport.ReceivePack; @@ -114,7 +114,7 @@ public ReceivePack create(HttpServletRequest req, Repository db) remoteRepository = src.getRepository(); remoteURI = toURIish(app, srcName); - RepositoryConfig cfg = remoteRepository.getConfig(); + FileBasedConfig cfg = remoteRepository.getConfig(); cfg.setBoolean("http", null, "receivepack", true); cfg.save(); } diff --git a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/HookMessageTest.java b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/HookMessageTest.java index 224ea05c1..b98171ebd 100644 --- a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/HookMessageTest.java +++ b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/HookMessageTest.java @@ -61,10 +61,10 @@ import org.eclipse.jgit.http.test.util.HttpTestCase; import org.eclipse.jgit.junit.TestRepository; import org.eclipse.jgit.lib.Constants; +import org.eclipse.jgit.lib.FileBasedConfig; import org.eclipse.jgit.lib.NullProgressMonitor; import org.eclipse.jgit.lib.ObjectId; import org.eclipse.jgit.lib.Repository; -import org.eclipse.jgit.lib.RepositoryConfig; import org.eclipse.jgit.revwalk.RevBlob; import org.eclipse.jgit.revwalk.RevCommit; import org.eclipse.jgit.transport.PreReceiveHook; @@ -124,7 +124,7 @@ public void onPreReceive(ReceivePack rp, remoteRepository = src.getRepository(); remoteURI = toURIish(app, srcName); - RepositoryConfig cfg = remoteRepository.getConfig(); + FileBasedConfig cfg = remoteRepository.getConfig(); cfg.setBoolean("http", null, "receivepack", true); cfg.save(); } diff --git a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SmartClientSmartServerTest.java b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SmartClientSmartServerTest.java index f7b3bdb20..74dd8af8e 100644 --- a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SmartClientSmartServerTest.java +++ b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SmartClientSmartServerTest.java @@ -76,12 +76,12 @@ import org.eclipse.jgit.junit.TestRepository; import org.eclipse.jgit.junit.TestRng; import org.eclipse.jgit.lib.Constants; +import org.eclipse.jgit.lib.FileBasedConfig; import org.eclipse.jgit.lib.NullProgressMonitor; import org.eclipse.jgit.lib.ObjectId; import org.eclipse.jgit.lib.Ref; import org.eclipse.jgit.lib.ReflogReader; import org.eclipse.jgit.lib.Repository; -import org.eclipse.jgit.lib.RepositoryConfig; import org.eclipse.jgit.revwalk.RevBlob; import org.eclipse.jgit.revwalk.RevCommit; import org.eclipse.jgit.transport.FetchConnection; @@ -547,7 +547,7 @@ public void testPush_ChunkedEncoding() throws Exception { } private void enableReceivePack() throws IOException { - final RepositoryConfig cfg = remoteRepository.getConfig(); + final FileBasedConfig cfg = remoteRepository.getConfig(); cfg.setBoolean("http", null, "receivepack", true); cfg.save(); } diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectWriter.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectWriter.java index 20147ed6c..3ba67476e 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectWriter.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectWriter.java @@ -336,7 +336,7 @@ ObjectId writeObject(final int type, long len, final InputStream is, md.reset(); if (store) { - def = new Deflater(r.getConfig().getCore().getCompression()); + def = new Deflater(r.getConfig().get(CoreConfig.KEY).getCompression()); deflateStream = new DeflaterOutputStream(fileStream, def); } else deflateStream = null; diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/Repository.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/Repository.java index e605928da..78fe6065a 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/Repository.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/Repository.java @@ -110,7 +110,7 @@ public class Repository { private final FileBasedConfig userConfig; - private final RepositoryConfig config; + private final FileBasedConfig config; private final RefDatabase refs; @@ -244,7 +244,7 @@ public Repository(final File d, final File workTree, final File objectDir, this.fs = fs; userConfig = SystemReader.getInstance().openUserConfig(fs); - config = new RepositoryConfig(userConfig, fs.resolve(gitDir, "config")); + config = new FileBasedConfig(userConfig, fs.resolve(gitDir, "config")); loadUserConfig(); loadConfig(); @@ -351,7 +351,7 @@ public void create() throws IOException { * in case of IO problem */ public void create(boolean bare) throws IOException { - final RepositoryConfig cfg = getConfig(); + final FileBasedConfig cfg = getConfig(); if (cfg.getFile().exists()) { throw new IllegalStateException(MessageFormat.format( JGitText.get().repositoryAlreadyExists, gitDir)); @@ -409,7 +409,7 @@ public RefDatabase getRefDatabase() { /** * @return the configuration of this repository */ - public RepositoryConfig getConfig() { + public FileBasedConfig getConfig() { if (userConfig.isOutdated()) { try { loadUserConfig(); diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/RepositoryConfig.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/RepositoryConfig.java deleted file mode 100644 index 805975a8d..000000000 --- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/RepositoryConfig.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Copyright (C) 2009, Constantine Plotnikov - * Copyright (C) 2007, Dave Watson - * Copyright (C) 2008-2009, Google Inc. - * Copyright (C) 2009, JetBrains s.r.o. - * Copyright (C) 2007-2008, Robin Rosenberg - * Copyright (C) 2006-2008, Shawn O. Pearce - * Copyright (C) 2008, Thad Hughes - * Copyright (C) 2009, Yann Simon - * 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.lib; - -import java.io.File; - -/** - * An object representing the Git config file. - * - * This can be either the repository specific file or the user global - * file depending on how it is instantiated. - */ -public class RepositoryConfig extends FileBasedConfig { - /** Section name for a branch configuration. */ - public static final String BRANCH_SECTION = "branch"; - - /** - * Create a Git configuration file reader/writer/cache for a specific file. - * - * @param base - * configuration that provides default values if this file does - * not set/override a particular key. Often this is the user's - * global configuration file, or the system level configuration. - * @param cfgLocation - * path of the file to load (or save). - */ - public RepositoryConfig(final Config base, final File cfgLocation) { - super(base, cfgLocation); - } - - /** - * @return Core configuration values - */ - public CoreConfig getCore() { - return get(CoreConfig.KEY); - } - - /** - * @return transfer, fetch and receive configuration values - */ - public TransferConfig getTransfer() { - return get(TransferConfig.KEY); - } - - /** @return standard user configuration data */ - public UserConfig getUserConfig() { - return get(UserConfig.KEY); - } - - /** - * @return the author name as defined in the git variables - * and configurations. If no name could be found, try - * to use the system user name instead. - */ - public String getAuthorName() { - return getUserConfig().getAuthorName(); - } - - /** - * @return the committer name as defined in the git variables - * and configurations. If no name could be found, try - * to use the system user name instead. - */ - public String getCommitterName() { - return getUserConfig().getCommitterName(); - } - - /** - * @return the author email as defined in git variables and - * configurations. If no email could be found, try to - * propose one default with the user name and the - * host name. - */ - public String getAuthorEmail() { - return getUserConfig().getAuthorEmail(); - } - - /** - * @return the committer email as defined in git variables and - * configurations. If no email could be found, try to - * propose one default with the user name and the - * host name. - */ - public String getCommitterEmail() { - return getUserConfig().getCommitterEmail(); - } -}