fix(planning): return to the list base branch after integration cleanup, not a guessed task branch
This commit is contained in:
@@ -133,15 +133,29 @@ public sealed class PlanningAggregator
|
||||
var current = await _git.GetCurrentBranchAsync(repoDir, ct);
|
||||
if (string.Equals(current, branch, StringComparison.Ordinal))
|
||||
{
|
||||
var branches = await _git.ListLocalBranchesAsync(repoDir, ct);
|
||||
var target = branches.FirstOrDefault(b => b != branch && !b.StartsWith("claudedo/", StringComparison.Ordinal)) ?? "main";
|
||||
await _git.CheckoutBranchAsync(repoDir, target, ct);
|
||||
await _git.CheckoutBranchAsync(repoDir, await ResolveReturnBranchAsync(planning, repoDir, ct), ct);
|
||||
}
|
||||
|
||||
try { await _git.BranchDeleteAsync(repoDir, branch, force: true, ct); }
|
||||
catch { /* already gone — idempotent */ }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Rücksprung vom Integration-Branch: <c>list_config.base_branch</c>, sonst <c>main</c> (bzw. <c>master</c>).
|
||||
/// Nie aus der Branchliste raten — die enthält auch Task-Branches, die in Worktrees ausgecheckt sind.
|
||||
/// </summary>
|
||||
private async Task<string> ResolveReturnBranchAsync(TaskEntity planning, string repoDir, CancellationToken ct)
|
||||
{
|
||||
using var ctx = _dbFactory.CreateDbContext();
|
||||
var baseBranch = await ctx.ListConfigs.AsNoTracking()
|
||||
.Where(c => c.ListId == planning.ListId)
|
||||
.Select(c => c.BaseBranch)
|
||||
.FirstOrDefaultAsync(ct);
|
||||
if (!string.IsNullOrWhiteSpace(baseBranch)) return baseBranch;
|
||||
var branches = await _git.ListLocalBranchesAsync(repoDir, ct);
|
||||
return !branches.Contains("main") && branches.Contains("master") ? "master" : "main";
|
||||
}
|
||||
|
||||
private async Task<(TaskEntity planning, string repoDir, IReadOnlyList<TaskEntity> children)>
|
||||
LoadPlanningContextAsync(string planningTaskId, CancellationToken ct)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user