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 */
|
||||
public static final String CONFIG_KEY_BARE = "bare";
|
||||
|
||||
/** The "excludesfile" key */
|
||||
public static final String CONFIG_KEY_EXCLUDESFILE = "excludesfile";
|
||||
|
||||
/** The "filemode" key */
|
||||
public static final String CONFIG_KEY_FILEMODE = "filemode";
|
||||
|
||||
|
|
|
@ -80,10 +80,14 @@ public static enum AutoCRLF {
|
|||
|
||||
private final boolean logAllRefUpdates;
|
||||
|
||||
private final String excludesfile;
|
||||
|
||||
private CoreConfig(final Config rc) {
|
||||
compression = rc.getInt("core", "compression", DEFAULT_COMPRESSION);
|
||||
packIndexVersion = rc.getInt("pack", "indexversion", 2);
|
||||
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() {
|
||||
return logAllRefUpdates;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return path of excludesfile
|
||||
*/
|
||||
public String getExcludesFile() {
|
||||
return excludesfile;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -48,6 +48,7 @@
|
|||
import java.io.ByteArrayInputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.nio.ByteBuffer;
|
||||
|
@ -69,8 +70,10 @@
|
|||
import org.eclipse.jgit.ignore.IgnoreNode;
|
||||
import org.eclipse.jgit.ignore.IgnoreRule;
|
||||
import org.eclipse.jgit.lib.Constants;
|
||||
import org.eclipse.jgit.lib.CoreConfig;
|
||||
import org.eclipse.jgit.lib.FileMode;
|
||||
import org.eclipse.jgit.lib.Repository;
|
||||
import org.eclipse.jgit.util.FS;
|
||||
import org.eclipse.jgit.util.IO;
|
||||
import org.eclipse.jgit.util.io.EolCanonicalizingInputStream;
|
||||
|
||||
|
@ -897,7 +900,27 @@ IgnoreNode load() throws IOException {
|
|||
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()) {
|
||||
FileInputStream in = new FileInputStream(exclude);
|
||||
try {
|
||||
|
@ -906,8 +929,6 @@ IgnoreNode load() throws IOException {
|
|||
in.close();
|
||||
}
|
||||
}
|
||||
|
||||
return r.getRules().isEmpty() ? null : r;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue