aboutsummaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/WorkingTreeOptions.java
blob: 8102b89e67bac7f5524398a0258d0b568221997d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/*
 * Copyright (C) 2010, Marc Strapetz <marc.strapetz@syntevo.com>
 * Copyright (C) 2012-2013, Robin Rosenberg 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.treewalk;

import org.eclipse.jgit.lib.Config;
import org.eclipse.jgit.lib.Config.SectionParser;
import org.eclipse.jgit.lib.ConfigConstants;
import org.eclipse.jgit.lib.CoreConfig.AutoCRLF;
import org.eclipse.jgit.lib.CoreConfig.CheckStat;
import org.eclipse.jgit.lib.CoreConfig.EOL;
import org.eclipse.jgit.lib.CoreConfig.HideDotFiles;
import org.eclipse.jgit.lib.CoreConfig.SymLinks;

/**
 * Options used by the {@link org.eclipse.jgit.treewalk.WorkingTreeIterator}.
 */
public class WorkingTreeOptions {
	/** Key for {@link Config#get(SectionParser)}. */
	public static final Config.SectionParser<WorkingTreeOptions> KEY =
			WorkingTreeOptions::new;

	private final boolean fileMode;

	private final AutoCRLF autoCRLF;

	private final EOL eol;

	private final CheckStat checkStat;

	private final SymLinks symlinks;

	private final HideDotFiles hideDotFiles;

	private final boolean dirNoGitLinks;

	private WorkingTreeOptions(Config rc) {
		fileMode = rc.getBoolean(ConfigConstants.CONFIG_CORE_SECTION,
				ConfigConstants.CONFIG_KEY_FILEMODE, true);
		autoCRLF = rc.getEnum(ConfigConstants.CONFIG_CORE_SECTION, null,
				ConfigConstants.CONFIG_KEY_AUTOCRLF, AutoCRLF.FALSE);
		eol = rc.getEnum(ConfigConstants.CONFIG_CORE_SECTION, null,
				ConfigConstants.CONFIG_KEY_EOL, EOL.NATIVE);
		checkStat = rc.getEnum(ConfigConstants.CONFIG_CORE_SECTION, null,
				ConfigConstants.CONFIG_KEY_CHECKSTAT, CheckStat.DEFAULT);
		symlinks = rc.getEnum(ConfigConstants.CONFIG_CORE_SECTION, null,
				ConfigConstants.CONFIG_KEY_SYMLINKS, SymLinks.TRUE);
		hideDotFiles = rc.getEnum(ConfigConstants.CONFIG_CORE_SECTION, null,
				ConfigConstants.CONFIG_KEY_HIDEDOTFILES,
				HideDotFiles.DOTGITONLY);
		dirNoGitLinks = rc.getBoolean(ConfigConstants.CONFIG_CORE_SECTION, null,
				ConfigConstants.CONFIG_KEY_DIRNOGITLINKS,
				false);
	}

	/** @return true if the execute bit on working files should be trusted. */
	/**
	 * Whether the execute bit on working files should be trusted.
	 *
	 * @return {@code true} if the execute bit on working files should be
	 *         trusted.
	 */
	public boolean isFileMode() {
		return fileMode;
	}

	/**
	 * Get automatic CRLF conversion configuration.
	 *
	 * @return how automatic CRLF conversion has been configured.
	 */
	public AutoCRLF getAutoCRLF() {
		return autoCRLF;
	}

	/**
	 * Get how text line endings should be normalized.
	 *
	 * @return how text line endings should be normalized.
	 * @since 4.3
	 */
	public EOL getEOL() {
		return eol;
	}

	/**
	 * Get how stat data is compared.
	 *
	 * @return how stat data is compared.
	 * @since 3.0
	 */
	public CheckStat getCheckStat() {
		return checkStat;
	}

	/**
	 * Get how we handle symbolic links
	 *
	 * @return how we handle symbolic links
	 * @since 3.3
	 */
	public SymLinks getSymLinks() {
		return symlinks;
	}

	/**
	 * Get how we create '.'-files (on Windows)
	 *
	 * @return how we create '.'-files (on Windows)
	 * @since 3.5
	 */
	public HideDotFiles getHideDotFiles() {
		return hideDotFiles;
	}

	/**
	 * Whether or not we treat nested repos as directories.
	 *
	 * @return whether or not we treat nested repos as directories. If true,
	 *         folders containing .git entries will not be treated as gitlinks.
	 * @since 4.3
	 */
	public boolean isDirNoGitLinks() { return dirNoGitLinks; }
}