Browse Source

Change FS not to throw NPE when facing InMemory databases

The FS class and the subclasses FS_POSIX assumed in the findHook()
method that every repository has a valid gitDir. But in tests when using
in-memory-repositories this is not true and this method was generating
NPEs. Change the method to return null if no repository directory can be
determined.

Change-Id: I38a4d36dc6452b5dacae3d0dbf562b569ca3c19b
tags/v4.1.0.201509280440-r
Christian Halstrick 8 years ago
parent
commit
d0d637342b

+ 4
- 1
org.eclipse.jgit/src/org/eclipse/jgit/util/FS.java View File

@@ -866,7 +866,10 @@ public abstract class FS {
* @since 4.0
*/
public File findHook(Repository repository, final String hookName) {
final File hookFile = new File(new File(repository.getDirectory(),
File gitDir = repository.getDirectory();
if (gitDir == null)
return null;
final File hookFile = new File(new File(gitDir,
Constants.HOOKS), hookName);
return hookFile.isFile() ? hookFile : null;
}

+ 3
- 0
org.eclipse.jgit/src/org/eclipse/jgit/util/FS_POSIX.java View File

@@ -335,6 +335,9 @@ public class FS_POSIX extends FS {
@Override
public File findHook(Repository repository, String hookName) {
final File gitdir = repository.getDirectory();
if (gitdir == null) {
return null;
}
final Path hookPath = gitdir.toPath().resolve(Constants.HOOKS)
.resolve(hookName);
if (Files.isExecutable(hookPath))

Loading…
Cancel
Save