James Moger
2012-06-07 ae9e157ef4e6a3708489725d4436cc15d273308f
src/com/gitblit/utils/JGitUtils.java
@@ -20,7 +20,6 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.charset.Charset;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Arrays;
@@ -543,14 +542,15 @@
    * @param tree
    *            if null, the RevTree from HEAD is assumed.
    * @param blobPath
    * @param charsets optional
    * @return UTF-8 string content
    */
   public static String getStringContent(Repository repository, RevTree tree, String blobPath) {
   public static String getStringContent(Repository repository, RevTree tree, String blobPath, String... charsets) {
      byte[] content = getByteContent(repository, tree, blobPath);
      if (content == null) {
         return null;
      }
      return new String(content, Charset.forName(Constants.CHARACTER_ENCODING));
      return StringUtils.decodeString(content, charsets);
   }
   /**
@@ -589,14 +589,15 @@
    * 
    * @param repository
    * @param objectId
    * @param charsets optional
    * @return UTF-8 string content
    */
   public static String getStringContent(Repository repository, String objectId) {
   public static String getStringContent(Repository repository, String objectId, String... charsets) {
      byte[] content = getByteContent(repository, objectId);
      if (content == null) {
         return null;
      }
      return new String(content, Charset.forName(Constants.CHARACTER_ENCODING));
      return StringUtils.decodeString(content, charsets);
   }
   /**
@@ -1223,6 +1224,74 @@
   }
   
   /**
    * Sets the local branch ref to point to the specified commit id.
    *
    * @param repository
    * @param branch
    * @param commitId
    * @return true if successful
    */
   public static boolean setBranchRef(Repository repository, String branch, String commitId) {
      String branchName = branch;
      if (!branchName.startsWith(Constants.R_HEADS)) {
         branchName = Constants.R_HEADS + branch;
      }
      try {
         RefUpdate refUpdate = repository.updateRef(branchName, false);
         refUpdate.setNewObjectId(ObjectId.fromString(commitId));
         RefUpdate.Result result = refUpdate.forceUpdate();
         switch (result) {
         case NEW:
         case FORCED:
         case NO_CHANGE:
         case FAST_FORWARD:
            return true;
         default:
            LOGGER.error(MessageFormat.format("{0} {1} update to {2} returned result {3}",
                  repository.getDirectory().getAbsolutePath(), branchName, commitId, result));
         }
      } catch (Throwable t) {
         error(t, repository, "{0} failed to set {1} to {2}", branchName, commitId);
      }
      return false;
   }
   /**
    * Deletes the specified branch ref.
    *
    * @param repository
    * @param branch
    * @return true if successful
    */
   public static boolean deleteBranchRef(Repository repository, String branch) {
      String branchName = branch;
      if (!branchName.startsWith(Constants.R_HEADS)) {
         branchName = Constants.R_HEADS + branch;
      }
      try {
         RefUpdate refUpdate = repository.updateRef(branchName, false);
         refUpdate.setForceUpdate(true);
         RefUpdate.Result result = refUpdate.delete();
         switch (result) {
         case NEW:
         case FORCED:
         case NO_CHANGE:
         case FAST_FORWARD:
            return true;
         default:
            LOGGER.error(MessageFormat.format("{0} failed to delete to {1} returned result {2}",
                  repository.getDirectory().getAbsolutePath(), branchName, result));
         }
      } catch (Throwable t) {
         error(t, repository, "{0} failed to delete {1}", branchName);
      }
      return false;
   }
   /**
    * Get the full branch and tag ref names for any potential HEAD targets.
    *
    * @param repository