From 9727511ad07db2c332f164fe399108768457bdae Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Sun, 13 Jan 2013 17:28:18 -0500
Subject: [PATCH] Null checks when generating a fork network (issue-187)
---
src/com/gitblit/utils/JGitUtils.java | 38 ++++++++++++++++++++++++++++++++++----
1 files changed, 34 insertions(+), 4 deletions(-)
diff --git a/src/com/gitblit/utils/JGitUtils.java b/src/com/gitblit/utils/JGitUtils.java
index beaa27d..e112770 100644
--- a/src/com/gitblit/utils/JGitUtils.java
+++ b/src/com/gitblit/utils/JGitUtils.java
@@ -537,7 +537,7 @@
* @param path
* @return content as a byte []
*/
- public static byte[] getByteContent(Repository repository, RevTree tree, final String path) {
+ public static byte[] getByteContent(Repository repository, RevTree tree, final String path, boolean throwError) {
RevWalk rw = new RevWalk(repository);
TreeWalk tw = new TreeWalk(repository);
tw.setFilter(PathFilterGroup.createFromStrings(Collections.singleton(path)));
@@ -572,7 +572,9 @@
}
}
} catch (Throwable t) {
- error(t, repository, "{0} can't find {1} in tree {2}", path, tree.name());
+ if (throwError) {
+ error(t, repository, "{0} can't find {1} in tree {2}", path, tree.name());
+ }
} finally {
rw.dispose();
tw.release();
@@ -591,7 +593,7 @@
* @return UTF-8 string content
*/
public static String getStringContent(Repository repository, RevTree tree, String blobPath, String... charsets) {
- byte[] content = getByteContent(repository, tree, blobPath);
+ byte[] content = getByteContent(repository, tree, blobPath, true);
if (content == null) {
return null;
}
@@ -1457,6 +1459,20 @@
int maxCount) {
return getRefs(repository, Constants.R_NOTES, fullName, maxCount);
}
+
+ /**
+ * Returns the list of refs in the specified base ref. If repository does
+ * not exist or is empty, an empty list is returned.
+ *
+ * @param repository
+ * @param fullName
+ * if true, /refs/yadayadayada is returned. If false,
+ * yadayadayada is returned.
+ * @return list of refs
+ */
+ public static List<RefModel> getRefs(Repository repository, String baseRef) {
+ return getRefs(repository, baseRef, true, -1);
+ }
/**
* Returns a list of references in the repository matching "refs". If the
@@ -1570,7 +1586,7 @@
*/
public static List<SubmoduleModel> getSubmodules(Repository repository, RevTree tree) {
List<SubmoduleModel> list = new ArrayList<SubmoduleModel>();
- byte [] blob = getByteContent(repository, tree, ".gitmodules");
+ byte [] blob = getByteContent(repository, tree, ".gitmodules", false);
if (blob == null) {
return list;
}
@@ -1720,4 +1736,18 @@
}
return success;
}
+
+ /**
+ * Reads the sparkleshare id, if present, from the repository.
+ *
+ * @param repository
+ * @return an id or null
+ */
+ public static String getSparkleshareId(Repository repository) {
+ byte[] content = getByteContent(repository, null, ".sparkleshare", false);
+ if (content == null) {
+ return null;
+ }
+ return StringUtils.decodeString(content);
+ }
}
--
Gitblit v1.9.1