Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

make sure git clone with a tag argument actually downloads a tag #3795

Merged
merged 9 commits into from
Sep 1, 2021

Conversation

Flamefire
Copy link
Contributor

The git clone command accept a --branch argument to clone a specific branch.
We use that to clone/download as tarball tags as it also accepts tags as the branch-argument.

However in case there is both a branch and a tag with the same name (happened in PyTorch) this will download the branch instead.

As contrary to git checkout git clone --branch does not accept neither a commit nor a direct tag reference (refs/tags/foo) we cannot reliably clone a tag only. But doing so (especially with --depth 1 aka "shallow clone") is considerably faster and saves bandwidth.

So the current solution assumes that no branch with the same name as the tag exists and does the clone as before. It then checks, if we indeed cloned a tag
We could error out here, or (as done now) fetch the full history (as in a full clone) and check out the tag and submodules via refs/tags/foo.

--> In almost all cases the download is as fast as possible and it still works in the naughty case where maintainers screwed up and created a branch with the same name as a tag.

Avoids accidentally cloning a branch with the same name as that would
take preference for the --branch option of git clone
Use shallow checkouts if .git folder is not required
Don't download submodules if we do that again for a potentially other version
Check for return value of get_source_tarball_from_git and use context manager
Can't use refs/tags/xxx for git clone so clone it assuming it is a tag
and check afterwards.
Fall back to fetching the full history and checking out the tag and
submodules manually
@Flamefire Flamefire closed this Aug 6, 2021
@Flamefire Flamefire reopened this Aug 6, 2021
@boegel boegel added the bug fix label Aug 18, 2021
@boegel boegel added this to the next release (4.4.2?) milestone Aug 18, 2021
@boegel boegel changed the title Make sure git clone with a tag argument actually downloads a tag. make sure git clone with a tag argument actually downloads a tag Aug 18, 2021
@boegel
Copy link
Member

boegel commented Sep 1, 2021

trying to trigger CI run again...

@boegel boegel closed this Sep 1, 2021
@boegel boegel reopened this Sep 1, 2021
@easybuilders easybuilders deleted a comment from boegelbot Sep 1, 2021
Copy link
Member

@boegel boegel left a comment

Choose a reason for hiding this comment

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

lgtm

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants