Graph now shows properly the HEAD commits when rebasing & commits referenced by unpeeled tags
This commit is contained in:
parent
457d604575
commit
59a36fed08
@ -24,6 +24,10 @@ class LogManager @Inject constructor() {
|
|||||||
val walk = GraphWalk(git.repository)
|
val walk = GraphWalk(git.repository)
|
||||||
|
|
||||||
walk.use {
|
walk.use {
|
||||||
|
// Without this, during rebase conflicts the graph won't show the HEAD commits (new commits created
|
||||||
|
// by the rebase)
|
||||||
|
walk.markStart(walk.lookupCommit(logList.first()))
|
||||||
|
|
||||||
walk.markStartAllRefs(Constants.R_HEADS)
|
walk.markStartAllRefs(Constants.R_HEADS)
|
||||||
walk.markStartAllRefs(Constants.R_REMOTES)
|
walk.markStartAllRefs(Constants.R_REMOTES)
|
||||||
walk.markStartAllRefs(Constants.R_TAGS)
|
walk.markStartAllRefs(Constants.R_TAGS)
|
||||||
|
@ -111,10 +111,16 @@ class GraphWalk(private var repository: Repository?) : RevWalk(repository) {
|
|||||||
|
|
||||||
private fun markStartRef(ref: Ref) {
|
private fun markStartRef(ref: Ref) {
|
||||||
try {
|
try {
|
||||||
val refTarget: Any = parseAny(ref.leaf.objectId)
|
val refTarget = parseAny(ref.leaf.objectId)
|
||||||
|
|
||||||
if (refTarget is RevCommit)
|
when (refTarget) {
|
||||||
markStart(refTarget)
|
is RevCommit -> markStart(refTarget)
|
||||||
|
// RevTag case handles commits without branches but only tags.
|
||||||
|
is RevTag -> {
|
||||||
|
val commit = lookupCommit(refTarget.`object`)
|
||||||
|
markStart(commit)
|
||||||
|
}
|
||||||
|
}
|
||||||
} catch (e: MissingObjectException) {
|
} catch (e: MissingObjectException) {
|
||||||
// Ignore missing Refs
|
// Ignore missing Refs
|
||||||
}
|
}
|
||||||
|
@ -54,7 +54,6 @@ import app.viewmodels.LogStatus
|
|||||||
import app.viewmodels.LogViewModel
|
import app.viewmodels.LogViewModel
|
||||||
import kotlinx.coroutines.flow.collect
|
import kotlinx.coroutines.flow.collect
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import openDirectoryDialog
|
|
||||||
import org.eclipse.jgit.lib.Ref
|
import org.eclipse.jgit.lib.Ref
|
||||||
import org.eclipse.jgit.lib.RepositoryState
|
import org.eclipse.jgit.lib.RepositoryState
|
||||||
import org.eclipse.jgit.revwalk.RevCommit
|
import org.eclipse.jgit.revwalk.RevCommit
|
||||||
@ -69,7 +68,13 @@ private val colors = listOf(
|
|||||||
)
|
)
|
||||||
|
|
||||||
private const val CANVAS_MIN_WIDTH = 100
|
private const val CANVAS_MIN_WIDTH = 100
|
||||||
private const val MIN_GRAPH_LINES = 2
|
private const val MIN_GRAPH_LANES = 2
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Additional number of lanes to simulate to create a margin at the end of the graph.
|
||||||
|
*/
|
||||||
|
private const val MARGIN_GRAPH_LANES = 2
|
||||||
|
private const val LANE_WIDTH = 30f
|
||||||
private const val DIVIDER_WIDTH = 8
|
private const val DIVIDER_WIDTH = 8
|
||||||
|
|
||||||
// TODO Min size for message column
|
// TODO Min size for message column
|
||||||
@ -355,10 +360,12 @@ fun GraphList(
|
|||||||
hasUncommitedChanges: Boolean,
|
hasUncommitedChanges: Boolean,
|
||||||
) {
|
) {
|
||||||
val graphRealWidth = remember(commitList, graphWidth) {
|
val graphRealWidth = remember(commitList, graphWidth) {
|
||||||
val maxLinePosition = if (commitList.isNotEmpty()) commitList.maxOf { it.lane.position }
|
val maxLinePosition = if (commitList.isNotEmpty())
|
||||||
else MIN_GRAPH_LINES
|
commitList.maxOf { it.lane.position }
|
||||||
|
else
|
||||||
|
MIN_GRAPH_LANES
|
||||||
|
|
||||||
((maxLinePosition + 2) * 30f).dp
|
((maxLinePosition + MARGIN_GRAPH_LANES) * LANE_WIDTH).dp
|
||||||
}
|
}
|
||||||
|
|
||||||
Box(
|
Box(
|
||||||
|
Loading…
Reference in New Issue
Block a user