Source:
private void updateBranch() throws MergeException { if (mergeTip != null && (branchTip == null || branchTip != mergeTip)) { if (GitRepositoryManager.REF_CONFIG.equals(branchUpdate.getName())) { try { ProjectConfig cfg = new ProjectConfig(destProject.getNameKey()); cfg.load(repo, mergeTip); } catch (Exception e) { throw new MergeException("Submit would store invalid" + " project configuration " + mergeTip.name() + " for " + destProject.getName(), e); } } branchUpdate.setForceUpdate(false); branchUpdate.setNewObjectId(mergeTip); branchUpdate.setRefLogMessage("merged", true); try { switch (branchUpdate.update(rw)) { case NEW: case FAST_FORWARD: if (branchUpdate.getResult() == RefUpdate.Result.FAST_FORWARD) { tagCache.updateFastForward(destBranch.getParentKey(), branchUpdate.getName(), branchUpdate.getOldObjectId(), mergeTip); } if (GitRepositoryManager.REF_CONFIG.equals(branchUpdate.getName())) { projectCache.evict(destProject); ProjectState ps = projectCache.get(destProject.getNameKey()); repoManager.setProjectDescription(destProject.getNameKey(), ps.getProject().getDescription()); } replication.fire(destBranch.getParentKey(), branchUpdate.getName()); Account account = null; final PatchSetApproval submitter = getSubmitter(db, mergeTip.patchsetId); if (submitter != null) { account = accountCache.get(submitter.getAccountId()).getAccount(); } hooks.doRefUpdatedHook(destBranch, branchUpdate, account); break; case LOCK_FAILURE: switch (destProject.getSubmitType()) { case CHERRY_PICK: case MERGE_ALWAYS: case MERGE_IF_NECESSARY: mergeQueue.recheckAfter(destBranch, random.nextInt(1000), MILLISECONDS); break; case FAST_FORWARD_ONLY: default: break; } break; } throw new IOException(branchUpdate.getResult().name()); } catch (IOException e) { throw new MergeException("Cannot update " + branchUpdate.getName(), e); } } }

Target:
private void updateBranch() throws MergeException { if (mergeTip != null && (branchTip == null || branchTip != mergeTip)) { if (GitRepositoryManager.REF_CONFIG.equals(branchUpdate.getName())) { try { ProjectConfig cfg = new ProjectConfig(destProject.getNameKey()); cfg.load(repo, mergeTip); } catch (Exception e) { throw new MergeException("Submit would store invalid" + " project configuration " + mergeTip.name() + " for " + destProject.getName(), e); } } branchUpdate.setForceUpdate(false); branchUpdate.setNewObjectId(mergeTip); branchUpdate.setRefLogMessage("merged", true); try { switch (branchUpdate.update(rw)) { case NEW: case FAST_FORWARD: if (branchUpdate.getResult() == RefUpdate.Result.FAST_FORWARD) { tagCache.updateFastForward(destBranch.getParentKey(), branchUpdate.getName(), branchUpdate.getOldObjectId(), mergeTip); } if (GitRepositoryManager.REF_CONFIG.equals(branchUpdate.getName())) { projectCache.evict(destProject); ProjectState ps = projectCache.get(destProject.getNameKey()); repoManager.setProjectDescription(destProject.getNameKey(), ps.getProject().getDescription()); } replication.fire(destBranch.getParentKey(), branchUpdate.getName()); Account account = null; final PatchSetApproval submitter = getSubmitter(db, mergeTip.patchsetId); if (submitter != null) { account = accountCache.get(submitter.getAccountId()).getAccount(); } hooks.doRefUpdatedHook(destBranch, branchUpdate, account); break; case LOCK_FAILURE: switch (destProject.getSubmitType()) { case CHERRY_PICK: case MERGE_ALWAYS: case MERGE_IF_NECESSARY: mergeQueue.recheckAfter(destBranch, random.nextInt(1000), MILLISECONDS); break; case FAST_FORWARD_ONLY: break; default: log.warn("Lock failure in project with unknown merge type " + destProject.getSubmitType()); break; } break; } throw new IOException(branchUpdate.getResult().name()); } catch (IOException e) { throw new MergeException("Cannot update " + branchUpdate.getName(), e); } } }