diff --git a/plugins/git4idea/src/git4idea/merge/GitDefaultMergeDialogCustomizer.kt b/plugins/git4idea/src/git4idea/merge/GitDefaultMergeDialogCustomizer.kt
index cff81a73ddf1..2623d2ecd65b 100644
--- a/plugins/git4idea/src/git4idea/merge/GitDefaultMergeDialogCustomizer.kt
+++ b/plugins/git4idea/src/git4idea/merge/GitDefaultMergeDialogCustomizer.kt
@@ -127,10 +127,12 @@ open class GitDefaultMergeDialogCustomizer(
val repository = GitRepositoryManager.getInstance(project).getRepositoryForFile(file) ?: return DEFAULT_CUSTOMIZER_LIST
return when (repository.state) {
Repository.State.MERGING -> getMergeTitleCustomizerList(repository, file)
+ Repository.State.REBASING -> getRebaseTitleCustomizerList(repository, file)
else -> DEFAULT_CUSTOMIZER_LIST
}
}
+
private fun getMergeTitleCustomizerList(repository: GitRepository, file: FilePath): DiffEditorTitleCustomizerList {
val currentBranchHash = getHead(repository) ?: return DEFAULT_CUSTOMIZER_LIST
val currentBranchPresentable = repository.currentBranchName ?: currentBranchHash.toShortString()
@@ -160,6 +162,34 @@ open class GitDefaultMergeDialogCustomizer(
return DiffEditorTitleCustomizerList(leftTitleCustomizer, null, rightTitleCustomizer)
}
+ private fun getRebaseTitleCustomizerList(repository: GitRepository, file: FilePath): DiffEditorTitleCustomizerList {
+ val currentBranchHash = getHead(repository) ?: return DEFAULT_CUSTOMIZER_LIST
+ val rebasingBranchPresentable = repository.currentBranchName ?: currentBranchHash.toShortString()
+ val upstreamBranch = resolveRebaseOntoBranch(repository) ?: return DEFAULT_CUSTOMIZER_LIST
+ val upstreamBranchHash = upstreamBranch.hash
+ val rebaseHead = tryResolveRef(repository, REBASE_HEAD) ?: return DEFAULT_CUSTOMIZER_LIST
+ val mergeBase = GitHistoryUtils.getMergeBase(
+ repository.project,
+ repository.root,
+ REBASE_HEAD,
+ upstreamBranchHash.asString()
+ )?.rev ?: return DEFAULT_CUSTOMIZER_LIST
+ val leftTitleCustomizer = getTitleWithCommitDetailsCustomizer(
+ "Rebasing ${rebaseHead.toShortString()} from ${escapeString(rebasingBranchPresentable)}",
+ repository,
+ file,
+ rebaseHead.asString())
+ val branchPartWithBold = if (upstreamBranch.branchName != null) " and commits from ${upstreamBranch.branchName}" else ""
+ val rightTitle = "Already rebased commits$branchPartWithBold"
+ val rightTitleCustomizer = getTitleWithCommitsRangeDetailsCustomizer(
+ rightTitle,
+ repository,
+ file,
+ Pair(mergeBase, HEAD)
+ )
+ return DiffEditorTitleCustomizerList(leftTitleCustomizer, null, rightTitleCustomizer)
+ }
+
private fun loadCherryPickCommitDetails(repository: GitRepository): CherryPickDetails? {
val cherryPickHead = tryResolveRef(repository, CHERRY_PICK_HEAD) ?: return null
diff --git a/plugins/git4idea/src/git4idea/rebase/GitRebaseProcess.java b/plugins/git4idea/src/git4idea/rebase/GitRebaseProcess.java
index 32468cc8b365..63455535be36 100644
--- a/plugins/git4idea/src/git4idea/rebase/GitRebaseProcess.java
+++ b/plugins/git4idea/src/git4idea/rebase/GitRebaseProcess.java
@@ -43,6 +43,7 @@ import git4idea.branch.GitRebaseParams;
import git4idea.commands.*;
import git4idea.history.GitHistoryUtils;
import git4idea.merge.GitConflictResolver;
+import git4idea.merge.GitDefaultMergeDialogCustomizer;
import git4idea.merge.GitDefaultMergeDialogCustomizerKt;
import git4idea.merge.GitMergeProvider;
import git4idea.rebase.GitSuccessfulRebase.SuccessType;
@@ -435,7 +436,7 @@ public class GitRebaseProcess {
return new GitRebaseMergeDialogCustomizer(repository, upstream, branch, rebaseHead, mergeBase);
}
}
- return new MergeDialogCustomizer();
+ return new GitDefaultMergeDialogCustomizer(repository.getProject());
}
private static class GitRebaseMergeDialogCustomizer extends MergeDialogCustomizer {