From 7cd88ddbd93b115aeda76b87b1c99f9afa4aaaef Mon Sep 17 00:00:00 2001 From: Lukasz Jader <ljaderdev@gmail.com> Date: Sat, 14 Jul 2012 08:01:51 -0400 Subject: [PATCH] Fix some typos in polish translation --- src/com/gitblit/FederationPullExecutor.java | 96 +++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 86 insertions(+), 10 deletions(-) diff --git a/src/com/gitblit/FederationPullExecutor.java b/src/com/gitblit/FederationPullExecutor.java index 2976c40..7b9c55b 100644 --- a/src/com/gitblit/FederationPullExecutor.java +++ b/src/com/gitblit/FederationPullExecutor.java @@ -33,7 +33,6 @@ import java.util.Set; import java.util.concurrent.TimeUnit; -import org.eclipse.jgit.lib.Ref; import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.lib.StoredConfig; import org.eclipse.jgit.revwalk.RevCommit; @@ -46,10 +45,13 @@ 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; import com.gitblit.utils.JGitUtils.CloneResult; import com.gitblit.utils.StringUtils; @@ -195,7 +197,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(); } @@ -230,17 +232,35 @@ } 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"); + // update local branches to match the remote tracking branches + for (RefModel ref : JGitUtils.getRemoteBranches(r, false, -1)) { + if (ref.displayName.startsWith("origin/")) { + String branch = org.eclipse.jgit.lib.Constants.R_HEADS + + ref.displayName.substring(ref.displayName.indexOf('/') + 1); + String hash = ref.getReferencedObjectId().getName(); + + JGitUtils.setBranchRef(r, branch, hash); + logger.info(MessageFormat.format(" resetting {0} of {1} to {2}", branch, + repository.name, hash)); + } + } + + String newHead; + if (StringUtils.isEmpty(repository.HEAD)) { + newHead = newFetchHead; + } else { + newHead = repository.HEAD; + } + JGitUtils.setHEADtoRef(r, newHead); logger.info(MessageFormat.format(" resetting HEAD of {0} to {1}", - repository.name, ref.getObjectId().getName())); + repository.name, newHead)); registration.updateStatus(repository, FederationPullStatus.MIRRORED); } else { // indicate no commits pulled @@ -270,6 +290,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 @@ -281,6 +312,8 @@ r.close(); } + IUserService userService = null; + try { // Pull USERS // TeamModels are automatically pulled because they are contained @@ -290,7 +323,7 @@ if (users != null && users.size() > 0) { File realmFile = new File(registrationFolderFile, registration.name + "_users.conf"); realmFile.delete(); - ConfigUserService userService = new ConfigUserService(realmFile); + userService = new ConfigUserService(realmFile); for (UserModel user : users) { userService.updateUserModel(user.username, user); @@ -336,7 +369,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(); @@ -358,6 +391,27 @@ } try { + // Pull TEAMS + // We explicitly pull these even though they are embedded in + // UserModels because it is possible to use teams to specify + // mailing lists or push scripts without specifying users. + if (userService != null) { + Collection<TeamModel> teams = FederationUtils.getTeams(registration); + if (teams != null && teams.size() > 0) { + for (TeamModel team : teams) { + userService.updateTeamModel(team); + } + } + } + } catch (ForbiddenException e) { + // ignore forbidden exceptions + } catch (IOException e) { + logger.warn(MessageFormat.format( + "Failed to retrieve TEAMS from federated gitblit ({0} @ {1})", + registration.name, registration.url), e); + } + + try { // Pull SETTINGS Map<String, String> settings = FederationUtils.getSettings(registration); if (settings != null && settings.size() > 0) { @@ -375,6 +429,28 @@ "Failed to retrieve SETTINGS from federated gitblit ({0} @ {1})", registration.name, registration.url), e); } + + try { + // Pull SCRIPTS + Map<String, String> scripts = FederationUtils.getScripts(registration); + if (scripts != null && scripts.size() > 0) { + for (Map.Entry<String, String> script : scripts.entrySet()) { + String scriptName = script.getKey(); + if (scriptName.endsWith(".groovy")) { + scriptName = scriptName.substring(0, scriptName.indexOf(".groovy")); + } + File file = new File(registrationFolderFile, registration.name + "_" + + scriptName + ".groovy"); + FileUtils.writeContent(file, script.getValue()); + } + } + } catch (ForbiddenException e) { + // ignore forbidden exceptions + } catch (IOException e) { + logger.warn(MessageFormat.format( + "Failed to retrieve SCRIPTS from federated gitblit ({0} @ {1})", + registration.name, registration.url), e); + } } /** -- Gitblit v1.9.1