Implement branch lineage discovery and ancestry tracing (106-branch-lineage) #107
+90
−0
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Overview
Introduced a new core feature to trace the evolutionary path of a branch. This allows the UI to identify which parent branches (e.g., develop, main) the current branch originated from.
Key Changes
C++ (GitBranch): Added getBranchLineage(QString) method using libgit2's git_merge_base logic.
Ancestry Logic: Implemented a robust check to identify reachable local branches by comparing their OIDs with the calculated merge base.
QML Integration: Exposed the functionality via GitResult to ensure consistent error handling and data flow to the UI.
Resource Management: Ensured strict cleanup of git_reference and git_branch_iterator to prevent memory leaks.