From 83b55b7801cbf1c37971eb530ddf9b0f46a11536 Mon Sep 17 00:00:00 2001 From: Kensuke Matsuzaki <zakki@peppermint.jp> Date: Sun, 25 Mar 2012 17:25:04 -0400 Subject: [PATCH] Add Japanese massages --- src/com/gitblit/FederationPullExecutor.java | 52 ++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 42 insertions(+), 10 deletions(-) diff --git a/src/com/gitblit/FederationPullExecutor.java b/src/com/gitblit/FederationPullExecutor.java index d54395e..432e293 100644 --- a/src/com/gitblit/FederationPullExecutor.java +++ b/src/com/gitblit/FederationPullExecutor.java @@ -33,6 +33,9 @@ import java.util.Set; import java.util.concurrent.TimeUnit; +import org.eclipse.jgit.api.Git; +import org.eclipse.jgit.api.ResetCommand; +import org.eclipse.jgit.api.ResetCommand.ResetType; import org.eclipse.jgit.lib.Ref; import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.lib.StoredConfig; @@ -46,9 +49,11 @@ import com.gitblit.Constants.FederationStrategy; import com.gitblit.GitBlitException.ForbiddenException; import com.gitblit.models.FederationModel; +import com.gitblit.models.RefModel; import com.gitblit.models.RepositoryModel; import com.gitblit.models.TeamModel; import com.gitblit.models.UserModel; +import com.gitblit.utils.ArrayUtils; import com.gitblit.utils.FederationUtils; import com.gitblit.utils.FileUtils; import com.gitblit.utils.JGitUtils; @@ -196,7 +201,7 @@ config.load(); String origin = config.getString("remote", "origin", "url"); RevCommit commit = JGitUtils.getCommit(existingRepository, - "refs/remotes/origin/master"); + org.eclipse.jgit.lib.Constants.FETCH_HEAD); if (commit != null) { fetchHead = commit.getName(); } @@ -231,15 +236,30 @@ } else { // fetch and update boolean fetched = false; - RevCommit commit = JGitUtils.getCommit(r, "refs/remotes/origin/master"); - String origin = commit.getName(); - fetched = fetchHead == null || !fetchHead.equals(origin); + RevCommit commit = JGitUtils.getCommit(r, org.eclipse.jgit.lib.Constants.FETCH_HEAD); + String newFetchHead = commit.getName(); + fetched = fetchHead == null || !fetchHead.equals(newFetchHead); if (registration.mirror) { // mirror if (fetched) { - // reset the local HEAD to origin/master - Ref ref = JGitUtils.resetHEAD(r, "origin/master"); + // find the first branch name that FETCH_HEAD points to + List<RefModel> refs = JGitUtils.getAllRefs(r).get(commit.getId()); + if (!ArrayUtils.isEmpty(refs)) { + for (RefModel ref : refs) { + if (ref.displayName.startsWith(org.eclipse.jgit.lib.Constants.R_REMOTES)) { + newFetchHead = ref.displayName; + break; + } + } + } + // reset HEAD to the FETCH_HEAD branch. + // if no branch was found, reset HEAD to the commit id. + Git git = new Git(r); + ResetCommand reset = git.reset(); + reset.setMode(ResetType.SOFT); + reset.setRef(newFetchHead); + Ref ref = reset.call(); logger.info(MessageFormat.format(" resetting HEAD of {0} to {1}", repository.name, ref.getObjectId().getName())); registration.updateStatus(repository, FederationPullStatus.MIRRORED); @@ -271,6 +291,17 @@ federationSets.addAll(repository.federationSets); } repository.federationSets = new ArrayList<String>(federationSets); + + // merge indexed branches + Set<String> indexedBranches = new HashSet<String>(); + if (rm.indexedBranches != null) { + indexedBranches.addAll(rm.indexedBranches); + } + if (repository.indexedBranches != null) { + indexedBranches.addAll(repository.indexedBranches); + } + repository.indexedBranches = new ArrayList<String>(indexedBranches); + } // only repositories that are actually _cloned_ from the origin // Gitblit repository are marked as federated. If the origin @@ -339,7 +370,7 @@ // update team repositories TeamModel remoteTeam = user.getTeam(teamname); - if (remoteTeam != null && remoteTeam.repositories != null) { + if (remoteTeam != null && !ArrayUtils.isEmpty(remoteTeam.repositories)) { int before = team.repositories.size(); team.addRepositories(remoteTeam.repositories); int after = team.repositories.size(); @@ -399,7 +430,7 @@ "Failed to retrieve SETTINGS from federated gitblit ({0} @ {1})", registration.name, registration.url), e); } - + try { // Pull SCRIPTS Map<String, String> scripts = FederationUtils.getScripts(registration); @@ -407,9 +438,10 @@ for (Map.Entry<String, String> script : scripts.entrySet()) { String scriptName = script.getKey(); if (scriptName.endsWith(".groovy")) { - scriptName = scriptName.substring(0, scriptName.indexOf(".groovy")); + scriptName = scriptName.substring(0, scriptName.indexOf(".groovy")); } - File file = new File(registrationFolderFile, registration.name + "_" + scriptName + ".groovy"); + File file = new File(registrationFolderFile, registration.name + "_" + + scriptName + ".groovy"); FileUtils.writeContent(file, script.getValue()); } } -- Gitblit v1.9.1