From d65fb8f1b77a7254c22edc9e7d8f47b29ec33072 Mon Sep 17 00:00:00 2001 From: James Moger Date: Wed, 1 Aug 2012 21:28:47 -0400 Subject: [PATCH] Tweak to relative path determination for symlinks (issue 116) --- src/com/gitblit/utils/FileUtils.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/com/gitblit/utils/FileUtils.java b/src/com/gitblit/utils/FileUtils.java index c291da6a..cba88d0c 100644 --- a/src/com/gitblit/utils/FileUtils.java +++ b/src/com/gitblit/utils/FileUtils.java @@ -226,7 +226,10 @@ public class FileUtils { public static String getRelativePath(File basePath, File path) { File exactBase = getExactFile(basePath); File exactPath = getExactFile(path); - if (exactPath.getPath().startsWith(exactBase.getPath())) { + if (path.getAbsolutePath().startsWith(basePath.getAbsolutePath())) { + // absolute base-path match + return StringUtils.getRelativePath(basePath.getAbsolutePath(), path.getAbsolutePath()); + } else if (exactPath.getPath().startsWith(exactBase.getPath())) { // canonical base-path match return StringUtils.getRelativePath(exactBase.getPath(), exactPath.getPath()); } else if (exactPath.getPath().startsWith(basePath.getAbsolutePath())) { @@ -235,9 +238,6 @@ public class FileUtils { } else if (path.getAbsolutePath().startsWith(exactBase.getPath())) { // mixed path match return StringUtils.getRelativePath(exactBase.getPath(), path.getAbsolutePath()); - } else if (path.getAbsolutePath().startsWith(basePath.getAbsolutePath())) { - // absolute base-path match - return StringUtils.getRelativePath(basePath.getAbsolutePath(), path.getAbsolutePath()); } // no relative relationship return null; -- 2.39.5