Merge "Respect core.excludesfile to enable global ignore rules "
This commit is contained in:
commit
2902c7679b
|
@ -72,6 +72,9 @@ public class ConfigConstants {
|
||||||
/** The "bare" key */
|
/** The "bare" key */
|
||||||
public static final String CONFIG_KEY_BARE = "bare";
|
public static final String CONFIG_KEY_BARE = "bare";
|
||||||
|
|
||||||
|
/** The "excludesfile" key */
|
||||||
|
public static final String CONFIG_KEY_EXCLUDESFILE = "excludesfile";
|
||||||
|
|
||||||
/** The "filemode" key */
|
/** The "filemode" key */
|
||||||
public static final String CONFIG_KEY_FILEMODE = "filemode";
|
public static final String CONFIG_KEY_FILEMODE = "filemode";
|
||||||
|
|
||||||
|
|
|
@ -80,10 +80,14 @@ public static enum AutoCRLF {
|
||||||
|
|
||||||
private final boolean logAllRefUpdates;
|
private final boolean logAllRefUpdates;
|
||||||
|
|
||||||
|
private final String excludesfile;
|
||||||
|
|
||||||
private CoreConfig(final Config rc) {
|
private CoreConfig(final Config rc) {
|
||||||
compression = rc.getInt("core", "compression", DEFAULT_COMPRESSION);
|
compression = rc.getInt("core", "compression", DEFAULT_COMPRESSION);
|
||||||
packIndexVersion = rc.getInt("pack", "indexversion", 2);
|
packIndexVersion = rc.getInt("pack", "indexversion", 2);
|
||||||
logAllRefUpdates = rc.getBoolean("core", "logallrefupdates", true);
|
logAllRefUpdates = rc.getBoolean("core", "logallrefupdates", true);
|
||||||
|
excludesfile = rc.getString(ConfigConstants.CONFIG_CORE_SECTION, null,
|
||||||
|
ConfigConstants.CONFIG_KEY_EXCLUDESFILE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -106,4 +110,11 @@ public int getPackIndexVersion() {
|
||||||
public boolean isLogAllRefUpdates() {
|
public boolean isLogAllRefUpdates() {
|
||||||
return logAllRefUpdates;
|
return logAllRefUpdates;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return path of excludesfile
|
||||||
|
*/
|
||||||
|
public String getExcludesFile() {
|
||||||
|
return excludesfile;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,6 +48,7 @@
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
|
@ -69,8 +70,10 @@
|
||||||
import org.eclipse.jgit.ignore.IgnoreNode;
|
import org.eclipse.jgit.ignore.IgnoreNode;
|
||||||
import org.eclipse.jgit.ignore.IgnoreRule;
|
import org.eclipse.jgit.ignore.IgnoreRule;
|
||||||
import org.eclipse.jgit.lib.Constants;
|
import org.eclipse.jgit.lib.Constants;
|
||||||
|
import org.eclipse.jgit.lib.CoreConfig;
|
||||||
import org.eclipse.jgit.lib.FileMode;
|
import org.eclipse.jgit.lib.FileMode;
|
||||||
import org.eclipse.jgit.lib.Repository;
|
import org.eclipse.jgit.lib.Repository;
|
||||||
|
import org.eclipse.jgit.util.FS;
|
||||||
import org.eclipse.jgit.util.IO;
|
import org.eclipse.jgit.util.IO;
|
||||||
import org.eclipse.jgit.util.io.EolCanonicalizingInputStream;
|
import org.eclipse.jgit.util.io.EolCanonicalizingInputStream;
|
||||||
|
|
||||||
|
@ -897,7 +900,27 @@ IgnoreNode load() throws IOException {
|
||||||
r = new IgnoreNode();
|
r = new IgnoreNode();
|
||||||
}
|
}
|
||||||
|
|
||||||
File exclude = new File(repository.getDirectory(), "info/exclude");
|
FS fs = repository.getFS();
|
||||||
|
String path = repository.getConfig().get(CoreConfig.KEY)
|
||||||
|
.getExcludesFile();
|
||||||
|
if (path != null) {
|
||||||
|
File excludesfile;
|
||||||
|
if (path.startsWith("~/"))
|
||||||
|
excludesfile = fs.resolve(fs.userHome(), path.substring(2));
|
||||||
|
else
|
||||||
|
excludesfile = fs.resolve(null, path);
|
||||||
|
loadRulesFromFile(r, excludesfile);
|
||||||
|
}
|
||||||
|
|
||||||
|
File exclude = fs
|
||||||
|
.resolve(repository.getDirectory(), "info/exclude");
|
||||||
|
loadRulesFromFile(r, exclude);
|
||||||
|
|
||||||
|
return r.getRules().isEmpty() ? null : r;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void loadRulesFromFile(IgnoreNode r, File exclude)
|
||||||
|
throws FileNotFoundException, IOException {
|
||||||
if (exclude.exists()) {
|
if (exclude.exists()) {
|
||||||
FileInputStream in = new FileInputStream(exclude);
|
FileInputStream in = new FileInputStream(exclude);
|
||||||
try {
|
try {
|
||||||
|
@ -906,8 +929,6 @@ IgnoreNode load() throws IOException {
|
||||||
in.close();
|
in.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return r.getRules().isEmpty() ? null : r;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue