From 73f1adb2e84b8b9cd4045bcdd7d9afa72d3875b5 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Tue, 27 Nov 2012 17:13:03 -0500 Subject: [PATCH] Added short commit id column to log and history tables (issue 168) --- src/com/gitblit/utils/FileUtils.java | 35 ++++++++++++++++++++++++++++++++++- 1 files changed, 34 insertions(+), 1 deletions(-) diff --git a/src/com/gitblit/utils/FileUtils.java b/src/com/gitblit/utils/FileUtils.java index a14928f..0b8aeb4 100644 --- a/src/com/gitblit/utils/FileUtils.java +++ b/src/com/gitblit/utils/FileUtils.java @@ -99,6 +99,25 @@ } return defaultValue; } + + /** + * Returns the byte [] content of the specified file. + * + * @param file + * @return the byte content of the file + */ + public static byte [] readContent(File file) { + byte [] buffer = new byte[(int) file.length()]; + try { + BufferedInputStream is = new BufferedInputStream(new FileInputStream(file)); + is.read(buffer, 0, buffer.length); + is.close(); + } catch (Throwable t) { + System.err.println("Failed to read byte content of " + file.getAbsolutePath()); + t.printStackTrace(); + } + return buffer; + } /** * Returns the string content of the specified file. @@ -226,7 +245,21 @@ public static String getRelativePath(File basePath, File path) { File exactBase = getExactFile(basePath); File exactPath = getExactFile(path); - return StringUtils.getRelativePath(exactBase.getPath(), exactPath.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())) { + // mixed path match + return StringUtils.getRelativePath(basePath.getAbsolutePath(), exactPath.getPath()); + } else if (path.getAbsolutePath().startsWith(exactBase.getPath())) { + // mixed path match + return StringUtils.getRelativePath(exactBase.getPath(), path.getAbsolutePath()); + } + // no relative relationship + return null; } /** -- Gitblit v1.9.1