Browse Source

Merge "Respect core.excludesfile to enable global ignore rules "

tags/v0.12.1
Shawn Pearce 13 years ago
parent
commit
2902c7679b

+ 3
- 0
org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigConstants.java View File

@@ -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";


+ 11
- 0
org.eclipse.jgit/src/org/eclipse/jgit/lib/CoreConfig.java View File

@@ -80,10 +80,14 @@ public class CoreConfig {

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 class CoreConfig {
public boolean isLogAllRefUpdates() {
return logAllRefUpdates;
}

/**
* @return path of excludesfile
*/
public String getExcludesFile() {
return excludesfile;
}
}

+ 24
- 3
org.eclipse.jgit/src/org/eclipse/jgit/treewalk/WorkingTreeIterator.java View File

@@ -48,6 +48,7 @@ package org.eclipse.jgit.treewalk;
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.errors.CorruptObjectException;
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 @@ public abstract class WorkingTreeIterator extends AbstractTreeIterator {
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 @@ public abstract class WorkingTreeIterator extends AbstractTreeIterator {
in.close();
}
}

return r.getRules().isEmpty() ? null : r;
}
}


Loading…
Cancel
Save