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

Limitation: two versions cannot refer the same commit #300

Open
aguschin opened this issue Nov 8, 2022 · 4 comments
Open

Limitation: two versions cannot refer the same commit #300

aguschin opened this issue Nov 8, 2022 · 4 comments
Labels
design Design questions, that affects the product significantly discussion Discussion is needed to reach conclusion limitations GTO limitations

Comments

@aguschin
Copy link
Contributor

aguschin commented Nov 8, 2022

@aguschin not allowing two versions referring to the same commit might be limiting. I see at least one scenario when that would be desirable, say we register some prerelease version then see everything is ok, and register the a release version to the same commit.

Originally posted by @Suor in https://github.com/iterative/studio/issues/4418#issuecomment-1306876623

@aguschin
Copy link
Contributor Author

aguschin commented Nov 8, 2022

Good feedback, @Suor. This will complicate things though, so I'm not sure if this case is sufficient for GTO to support that. The problem is that if you have many events referring the same commit (like register, assign, deregister, register new version, assign again, etc), that may cause confusion.

Also it's one of basic assumptions in GTO, so lifting that can cause changes in the code. This shouldn't stop us from supporting it if we decide it's right, OFC.

@aguschin aguschin added design Design questions, that affects the product significantly discussion Discussion is needed to reach conclusion labels Nov 16, 2022
@aguschin aguschin added the limitations GTO limitations label Aug 30, 2023
@arabold
Copy link

arabold commented Oct 19, 2023

I second the feedback above. Let me give some additional details I also posted in Discord: https://discord.com/channels/485586884165107732/903647230655881226/1164270028925972491

This conflicts with the branching and versioning strategy we're using for our project. All models are part of a monorepo and we increase the version of the repo whenever there is any change to any of the models. There are some dependencies (i.e. the Docker images used, Terraform configuration settings, etc.) that are not necessarily tracked as part of the model folder but outside of it. Some of them might be located in a different repo. Therefore we tag every time we do a release whether something changed or not. But that guarantees we have a consistent versioning scheme across the whole stack. In an extreme case this could even lead to the dev environment using a different version than the staging environment but they both are based on the very same commit hash of the repo.

The problem is that I cannot create a new version for the same commit hash with GTO. I don't see an option to force adding it either. I was wondering if I could simply create the tag manually without using the GTO CLI, but I haven't tried that as it seems like going against the explicit decision of GTO not to support this particular use case. I don't want to start spamming our repo with GTO specific tags if it turns out that it doesn't work anyway. However, for that reason we cannot use GTO or Iterative Studio as our model registry for the time being.

@dberenbaum
Copy link
Contributor

I haven't looked at how it impacts the code. From a high-level perspective, your use case sort violates the assumption that git should be the source of truth for changes in your project. On the other hand, we may be restricting usage by being overly opinionated. Happy to discuss further here or on a call.

@arabold
Copy link

arabold commented Oct 22, 2023

That's exactly the thing. It is and it must be. The only way to know which exact version of the application stack is deployed is by verifying either the commit hash or the version number. I generally prefer version numbers for readability (obviously).

Hence the need to tag my repo with a new version once we have updated any part of the application stack. Not all changes are possible to do purely in code though, i.e. sometimes you have a Terraform variable that changes for the environment that's not part of any actual code commit to the models repo. We need to be able to tag/version this change nonetheless as we redeploy and thus the deployed environment changes as well.

Hope that makes sense. Happy to discuss further.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
design Design questions, that affects the product significantly discussion Discussion is needed to reach conclusion limitations GTO limitations
Projects
None yet
Development

No branches or pull requests

3 participants