Merged
Conversation
This test demonstrates that updating from one Git tag to another fails in v4.x (worked in v2.x). Steps the test follows: 1. Create a repo with content at tag 1.0.0 2. Add more content and create tag 2.0.0 3. Initial checkout with branch=1.0.0 (works) 4. Update config to branch=2.0.0 5. Run update (FAILS - exits with 'No such branch 2.0.0') The test currently fails because git_update() treats tags as branches, trying to find them in 'git branch -a' output where they don't appear. Related to #46
Add git_is_tag() method to detect if a branch value is actually a tag, and handle tags correctly during git_update(): - Tags are checked out directly with 'git checkout <tag>' - Branches use the existing switch + merge logic - Explicitly fetch tags with 'git fetch --tags' This fixes the regression where updating from one tag to another stopped working in v4.x (worked in v2.x). The test now passes, demonstrating that tag updates work correctly. Fixes #46
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
Fixes #46: Git tags in
branchoption are now correctly handled during updatesThis PR fixes a regression introduced in v3.x/v4.x where updating from one Git tag to another stopped working. Tags were incorrectly treated as branches during the update process.
Current Status: Demonstrating the Bug
Failing Test
The first commit adds
test_update_git_tag_to_new_tag()that demonstrates the issue:Test scenario:
branch = 1.0.0(works viagit clone -b)branch = 2.0.0Error:
Root Cause
In
git_update()at lines 249-251:This code assumes the value in
branchis an actual Git branch. When it's a tag:git fetchruns successfully (fetches tags)git_switch_branch()looks for the tag ingit branch -aoutputWhy initial checkout works:
git clone -b 8.0.0recognizes tags and worksWhy update fails: The update logic only looks in branch listings
Next Steps
git_update()Test Plan