/* * Copyright (C) 2013, Gunnar Wagenknecht * Copyright (C) 2010, Chris Aniszczyk * Copyright (C) 2009, Christian Halstrick * Copyright (C) 2009, Google Inc. * Copyright (C) 2007, Robin Rosenberg * Copyright (C) 2006-2008, Shawn O. Pearce and others * * This program and the accompanying materials are made available under the * terms of the Eclipse Distribution License v. 1.0 which is available at * https://www.eclipse.org/org/documents/edl-v10.php. * * SPDX-License-Identifier: BSD-3-Clause */ package org.eclipse.jgit.lib; import static java.util.zip.Deflater.DEFAULT_COMPRESSION; import org.eclipse.jgit.lib.Config.SectionParser; /** * This class keeps git repository core parameters. */ public class CoreConfig { /** Key for {@link Config#get(SectionParser)}. */ public static final Config.SectionParser KEY = CoreConfig::new; /** Permissible values for {@code core.autocrlf}. */ public enum AutoCRLF { /** Automatic CRLF->LF conversion is disabled. */ FALSE, /** Automatic CRLF->LF conversion is enabled. */ TRUE, /** CRLF->LF performed, but no LF->CRLF. */ INPUT; } /** * Permissible values for {@code core.eol}. *

* https://git-scm.com/docs/gitattributes * * @since 4.3 */ public enum EOL { /** Check in with LF, check out with CRLF. */ CRLF, /** Check in with LF, check out without conversion. */ LF, /** Use the platform's native line ending. */ NATIVE; } /** * EOL stream conversion protocol. * * @since 4.3 */ public enum EolStreamType { /** Convert to CRLF without binary detection. */ TEXT_CRLF, /** Convert to LF without binary detection. */ TEXT_LF, /** Convert to CRLF with binary detection. */ AUTO_CRLF, /** Convert to LF with binary detection. */ AUTO_LF, /** Do not convert. */ DIRECT; } /** * Permissible values for {@code core.checkstat}. * * @since 3.0 */ public enum CheckStat { /** * Only check the size and whole second part of time stamp when * comparing the stat info in the dircache with actual file stat info. */ MINIMAL, /** * Check as much of the dircache stat info as possible. Implementation * limits may apply. */ DEFAULT } /** * Permissible values for {@code core.logAllRefUpdates}. * * @since 5.6 */ public enum LogRefUpdates { /** Don't create ref logs; default for bare repositories. */ FALSE, /** * Create ref logs for refs/heads/**, refs/remotes/**, refs/notes/**, * and for HEAD. Default for non-bare repositories. */ TRUE, /** Create ref logs for all refs/** and for HEAD. */ ALWAYS } private final int compression; private final int packIndexVersion; private final LogRefUpdates logAllRefUpdates; private final String excludesfile; private final String attributesfile; /** * Options for symlink handling * * @since 3.3 */ public enum SymLinks { /** Check out symbolic links as plain files . */ FALSE, /** Check out symbolic links as links. */ TRUE } /** * Options for hiding files whose names start with a period. * * @since 3.5 */ public enum HideDotFiles { /** Do not hide .files. */ FALSE, /** Hide add .files. */ TRUE, /** Hide only .git. */ DOTGITONLY } private CoreConfig(Config rc) { compression = rc.getInt(ConfigConstants.CONFIG_CORE_SECTION, ConfigConstants.CONFIG_KEY_COMPRESSION, DEFAULT_COMPRESSION); packIndexVersion = rc.getInt(ConfigConstants.CONFIG_PACK_SECTION, ConfigConstants.CONFIG_KEY_INDEXVERSION, 2); logAllRefUpdates = rc.getEnum(ConfigConstants.CONFIG_CORE_SECTION, null, ConfigConstants.CONFIG_KEY_LOGALLREFUPDATES, LogRefUpdates.TRUE); excludesfile = rc.getString(ConfigConstants.CONFIG_CORE_SECTION, null, ConfigConstants.CONFIG_KEY_EXCLUDESFILE); attributesfile = rc.getString(ConfigConstants.CONFIG_CORE_SECTION, null, ConfigConstants.CONFIG_KEY_ATTRIBUTESFILE); } /** * Get the compression level to use when storing loose objects * * @return The compression level to use when storing loose objects */ public int getCompression() { return compression; } /** * Get the preferred pack index file format; 0 for oldest possible. * * @return the preferred pack index file format; 0 for oldest possible. */ public int getPackIndexVersion() { return packIndexVersion; } /** * Whether to log all refUpdates * * @return whether to log all refUpdates * @deprecated since 5.6; default value depends on whether the repository is * bare. Use * {@link Config#getEnum(String, String, String, Enum)} * directly. */ @Deprecated public boolean isLogAllRefUpdates() { return !LogRefUpdates.FALSE.equals(logAllRefUpdates); } /** * Get path of excludesfile * * @return path of excludesfile */ public String getExcludesFile() { return excludesfile; } /** * Get path of attributesfile * * @return path of attributesfile * @since 3.7 */ public String getAttributesFile() { return attributesfile; } }