Florian Zschocke
2013-08-21 acb5bdf953e4242c175b22b4ddd2197079ee6ace
src/main/java/com/gitblit/GitBlit.java
@@ -232,6 +232,33 @@
      }
      return gitblit;
   }
   /**
    * Returns the boot date of the Gitblit server.
    *
    * @return the boot date of Gitblit
    */
   public static Date getBootDate() {
      return self().serverStatus.bootDate;
   }
   /**
    * Returns the most recent change date of any repository served by Gitblit.
    *
    * @return a date
    */
   public static Date getLastActivityDate() {
      Date date = null;
      for (String name : self().getRepositoryList()) {
         Repository r = self().getRepository(name);
         Date lastChange = JGitUtils.getLastChange(r).when;
         r.close();
         if (lastChange != null && (date == null || lastChange.after(date))) {
            date = lastChange;
         }
      }
      return date;
   }
   /**
    * Determine if this is the GO variant of Gitblit.
@@ -1530,6 +1557,10 @@
    * @return repository or null
    */
   public Repository getRepository(String repositoryName, boolean logError) {
      // Decode url-encoded repository name (issue-278)
      // http://stackoverflow.com/questions/17183110
      repositoryName = repositoryName.replace("%7E", "~").replace("%7e", "~");
      if (isCollectingGarbage(repositoryName)) {
         logger.warn(MessageFormat.format("Rejecting request for {0}, busy collecting garbage!", repositoryName));
         return null;
@@ -1629,6 +1660,10 @@
    * @return repository model or null
    */
   public RepositoryModel getRepositoryModel(String repositoryName) {
      // Decode url-encoded repository name (issue-278)
      // http://stackoverflow.com/questions/17183110
      repositoryName = repositoryName.replace("%7E", "~").replace("%7e", "~");
      if (!repositoryListCache.containsKey(repositoryName)) {
         RepositoryModel model = loadRepositoryModel(repositoryName);
         if (model == null) {
@@ -1986,6 +2021,14 @@
      boolean hasOrigin = !StringUtils.isEmpty(config.getString("remote", "origin", "url"));
      
      if (config != null) {
         // Initialize description from description file
         if (getConfig(config,"description", null) == null) {
            File descFile = new File(r.getDirectory(), "description");
            if (descFile.exists()) {
               config.setString(Constants.CONFIG_GITBLIT, null, "description",
                     com.gitblit.utils.FileUtils.readContent(descFile, System.getProperty("line.separator")));
            }
         }
         model.description = getConfig(config, "description", "");
         model.originRepository = getConfig(config, "originRepository", null);
         model.addOwners(ArrayUtils.fromString(getConfig(config, "owner", "")));
@@ -2486,6 +2529,15 @@
      // update settings
      if (r != null) {
         updateConfiguration(r, repository);
         // Update the description file
         File descFile = new File(r.getDirectory(), "description");
         if (repository.description != null)
         {
            com.gitblit.utils.FileUtils.writeContent(descFile, repository.description);
         }
         else if (descFile.exists() && !descFile.isDirectory()) {
            descFile.delete();
         }
         // only update symbolic head if it changes
         String currentRef = JGitUtils.getHEADRef(r);
         if (!StringUtils.isEmpty(repository.HEAD) && !repository.HEAD.equals(currentRef)) {