Skip to content

Comments

Experiments: VarCS + Rust#4

Draft
oahshtsua wants to merge 8 commits intomainfrom
exp/varcs-rs
Draft

Experiments: VarCS + Rust#4
oahshtsua wants to merge 8 commits intomainfrom
exp/varcs-rs

Conversation

@oahshtsua
Copy link
Collaborator

@oahshtsua oahshtsua commented Feb 18, 2026

Experimental Branch

This branch is for testing new ideas independently of the existing Python tool. It will contain loosely connected experimental features that explore different approaches, which may later be integrated into the broader workflow.

Since this is implemented as a Git extension, it can coexist with the existing Python CLI, which is also implemented as a Git extension. Both tools can be developed and used together if needed, allowing experimentation with Rust, libgit2, and other libraries while maintaining compatibility with the current workflows.

Features

1. Cherry-Pick Aware Commit Recognition (Done)

  • Detects commits across branches even if cherry-picked, using an unique identifier assigned to each commit.
  • Benefit: Track feature origins and variants reliably.
  • Idea: Embed a unique identifier to each commit and compare based on the identifier instead of the commit hash.
  • Implementation: Uses a git hook to populate the commit message with a UUID. A better approach would be to add a custom header (git allows this and just ignores any additional header) but this would require building the commit object manually. Also generating the change id based on the delta of the commit as opposed to a random UUID might be better for semantic significance.
Screenshot_20260218_131132

2. Deriving Variants from Features (WIP)

  • Filter commits related to a set of features and combine them to assemble a variant.
  • Benefit: Automatically generate variants from selected features.
  • Idea: Walk commit graph, extract deltas for chosen features, apply sequentially to build variant.
    • Git works mainly with snapshots of the working directory rather than with deltas. However, it does have some commands related to patches. Look into patched based workflows (git send email, gerrit review) to see if those mechanisms could be used.

3. Variants Abstraction (Done)

  • Introduce an abstraction over branches to differentiate between normal short-lived branches and variants, distinct from short-lived branches.
  • Benefit: Manage long-lived variants vs dev branches and support operations like “update all variants.”
  • Idea: Create a custom name spaced refs that point to branches that are variants.

the initial commit will house metadata on the variant
that is being derived like the author, the configs and
so on.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant