James Moger
2013-01-13 9cc56a1f60eff2ce1db40b7078eab92e78602e1c
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
@@ -1528,7 +1544,7 @@
      try {
         // search for the branch in local heads
         for (RefModel ref : JGitUtils.getLocalBranches(repository, false, -1)) {
            if (ref.displayName.endsWith(name)) {
            if (ref.reference.getName().endsWith(name)) {
               branch = ref;
               break;
            }
@@ -1537,7 +1553,7 @@
         // search for the branch in remote heads
         if (branch == null) {
            for (RefModel ref : JGitUtils.getRemoteBranches(repository, false, -1)) {
               if (ref.displayName.endsWith(name)) {
               if (ref.reference.getName().endsWith(name)) {
                  branch = ref;
                  break;
               }
@@ -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);
   }
}