diff options
author | Robin Rosenberg <robin.rosenberg@dewire.com> | 2009-12-09 09:54:08 +0100 |
---|---|---|
committer | Shawn O. Pearce <spearce@spearce.org> | 2009-12-28 15:58:47 -0800 |
commit | eb63bfc1b82ce21516b211df45069cbea87b7eee (patch) | |
tree | dc8e63302d0eadcedacb933bfda2d8ebc5b46d90 /org.eclipse.jgit.junit | |
parent | 5b13adcea97c19750ebfd5be226c48bb646708cf (diff) | |
download | jgit-eb63bfc1b82ce21516b211df45069cbea87b7eee.tar.gz jgit-eb63bfc1b82ce21516b211df45069cbea87b7eee.zip |
Recognize Git repository environment variables
This makes the jgit command line behave like the C Git implementation
in the respect.
These variables are not recognized in the core, though we add support
to do the overrides there. Hence other users of the JGit library, like
the Eclipse plugin and others, will not be affected.
GIT_DIR
The location of the ".git" directory.
GIT_WORK_TREE
The location of the work tree.
GIT_INDEX_FILE
The location of the index file.
GIT_CEILING_DIRECTORIES
A colon (semicolon on Windows) separated list of paths that
which JGit will not cross when looking for the .git directory.
GIT_OBJECT_DIRECTORY
The location of the objects directory under which objects are
stored.
GIT_ALTERNATE_OBJECT_DIRECTORIES
A colon (semicolon on Windows) separated list of object directories
to search for objects.
In addition to these we support the core.worktree config setting when
the git directory is set deliberately instead of being found.
Change-Id: I2b9bceb13c0f66b25e9e3cefd2e01534a286e04c
Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Diffstat (limited to 'org.eclipse.jgit.junit')
-rw-r--r-- | org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/LocalDiskRepositoryTestCase.java | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/LocalDiskRepositoryTestCase.java b/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/LocalDiskRepositoryTestCase.java index 5c8935c490..ec9b1d7ac3 100644 --- a/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/LocalDiskRepositoryTestCase.java +++ b/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/LocalDiskRepositoryTestCase.java @@ -51,6 +51,7 @@ import java.io.IOException; import java.io.OutputStreamWriter; import java.io.Writer; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -58,6 +59,7 @@ import java.util.concurrent.TimeUnit; import junit.framework.TestCase; +import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.FileBasedConfig; import org.eclipse.jgit.lib.PersonIdent; import org.eclipse.jgit.lib.Repository; @@ -124,6 +126,7 @@ public abstract class LocalDiskRepositoryTestCase extends TestCase { mockSystemReader = new MockSystemReader(); mockSystemReader.userGitConfig = new FileBasedConfig(new File(trash, "usergitconfig")); + ceilTestDirectories(getCeilings()); SystemReader.setInstance(mockSystemReader); final long now = mockSystemReader.getCurrentTime(); @@ -142,6 +145,25 @@ public abstract class LocalDiskRepositoryTestCase extends TestCase { WindowCache.reconfigure(c); } + + protected List<File> getCeilings() { + return Collections.singletonList(trash.getParentFile().getAbsoluteFile()); + } + + private void ceilTestDirectories(List<File> ceilings) { + mockSystemReader.setProperty(Constants.GIT_CEILING_DIRECTORIES_KEY, makePath(ceilings)); + } + + private String makePath(List<?> objects) { + final StringBuilder stringBuilder = new StringBuilder(); + for (Object object : objects) { + if (stringBuilder.length() > 0) + stringBuilder.append(File.pathSeparatorChar); + stringBuilder.append(object.toString()); + } + return stringBuilder.toString(); + } + @Override protected void tearDown() throws Exception { RepositoryCache.clear(); |