Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Conversation

@draftcode
Copy link
Contributor

@draftcode draftcode commented Oct 30, 2025

This relax the semantics of the branch metadata. In the branch metadata,
we track trunk: bool and head: string, but only one of them could be
specified in the current semantics. This update allows them to specify
both. That is, even if the parent branch is a trunk branch, a branch
metadata can specify the branching point. Accordingly, we update the
internal name of that branching point as BranchingPointCommitHash.

Newly added av branch --remote motivates this change. In that command,
we might see a partially merged stack. In that case, we will have a case
where a topic branch would have a trunk branch as a parent (because its
original parent has been merged), but at the same time, such topic
branches would need to have an explicit branching point in order to
avoid already merged commits to be considered as a part of that topic
branch.

Behavior updates would be necessary in the sequencer, but we will do
that in the following PRs.

@draftcode draftcode requested a review from a team as a code owner October 30, 2025 06:04
@aviator-app
Copy link
Contributor

aviator-app bot commented Oct 30, 2025

Current Aviator status

Aviator will automatically update this comment as the status of the PR changes.
Comment /aviator refresh to force Aviator to re-examine your PR (or learn about other /aviator commands).

This PR was merged using Aviator.

Stack

  1. 👉 Allow specifying the branching point even for trunk parents #621 👈 (this pr)

See the real-time status of this PR on the Aviator webapp.
Use the Aviator Chrome Extension to see the status of your PR within GitHub.

@aviator-app
Copy link
Contributor

aviator-app bot commented Oct 30, 2025

✅ FlexReview Status

Common Owner: aviator-co/engineering (expert-load-balance assignment)
Owner and Assignment:

  • aviator-co/engineering (expert-load-balance assignment)
    Owned Files
    • 🔒 e2e_tests/restack_test.go
    • 🔒 e2e_tests/sync_test.go
    • 🔒 cmd/av/adopt.go
    • 🔒 cmd/av/branch.go
    • 🔒 cmd/av/branchmeta.go
    • 🔒 cmd/av/diff.go
    • 🔒 internal/actions/get_remote_stacked_pr.go
    • 🔒 internal/actions/pr.go
    • 🔒 internal/meta/branchstate.go
    • 🔒 internal/reorder/plan.go
    • 🔒 internal/reorder/plan_test.go
    • 🔒 internal/reorder/stackbranch.go
    • 🔒 internal/sequencer/sequencer.go
    • 🔒 internal/gh/ghui/push.go

Review SLO: 7 business hours if PR size is <= 200 LOC for the first response.

@aviator-app aviator-app bot requested a review from simsinght October 30, 2025 06:04
@gemini-code-assist
Copy link

Summary of Changes

Hello @draftcode, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request introduces a significant refinement to how branch metadata is managed, specifically by allowing the explicit tracking of a BranchingPointCommitHash even when a branch's parent is identified as a trunk branch. This change is crucial for accurately representing complex branching scenarios, such as those encountered with partially merged stacks, where a topic branch might derive from a trunk but still needs a fixed reference point to distinguish its own commits. By renaming the Head field to BranchingPointCommitHash and updating its usage across the codebase, the PR enhances the precision and flexibility of branch tracking within the system.

Highlights

  • Enhanced Branch Metadata Semantics: The BranchState metadata now allows specifying both Trunk status and an explicit BranchingPointCommitHash simultaneously, relaxing previous constraints and enabling more flexible branch tracking.
  • Renamed Head to BranchingPointCommitHash: The Head field in meta.BranchState has been renamed to BranchingPointCommitHash for improved clarity regarding its purpose, though the underlying JSON field name remains head for backward compatibility.
  • Support for Partially Merged Stacks: This change addresses scenarios where a topic branch might have a trunk parent but still requires an explicit branching point to correctly identify its unique commits, as demonstrated by the av branch --remote command.
  • Widespread Codebase Updates: Numerous files across cmd/av, e2e_tests, internal/actions, internal/gh/ghui, internal/meta, internal/reorder, and internal/sequencer have been updated to reflect the new BranchingPointCommitHash field.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request primarily refactors the codebase by renaming the Head field in BranchState to BranchingPointCommitHash for better clarity, and updates all its usages accordingly. This is a welcome change for maintainability. The PR also aims to relax the branch metadata semantics to allow specifying a branching point even for trunk parents, which is a useful enhancement for handling partially merged stacks, especially for the av adopt --remote flow. I have one point of feedback regarding the implementation of this new semantic, which I've detailed in a specific comment.

This relax the semantics of the branch metadata. In the branch metadata,
we track `trunk: bool` and `head: string`, but only one of them could be
specified in the current semantics. This update allows them to specify
both. That is, even if the parent branch is a trunk branch, a branch
metadata can specify the branching point. Accordingly, we update the
internal name of that branching point as BranchingPointCommitHash.

Newly added av branch --remote motivates this change. In that command,
we might see a partially merged stack. In that case, we will have a case
where a topic branch would have a trunk branch as a parent (because its
original parent has been merged), but at the same time, such topic
branches would need to have an explicit branching point in order to
avoid already merged commits to be considered as a part of that topic
branch.

Behavior updates would be necessary in the sequencer, but we will do
that in the following PRs.
@draftcode draftcode force-pushed the update_metadata_semantics branch from 047eb15 to 55a6700 Compare October 30, 2025 07:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants