Add `status` command
Would be beneficial to see what git tags are not pushed right now (or possible conflicts for git tags - e.g. if you have local tag and remote but they're different).
E.g.
$ gto status
- Two artifacts (mymodel1, mydataset3) are added, but not committed.
Use `git add artifacts.yaml && git commit -m "your message"` to commit them.
- One new local git tag that registers a version is detected (`[email protected]`).
To push it to the repo use `gto push --tags`
Could be nice IMO 👍
But I think if we really want to help the user than we should push the tags from the commands to promote/register, maybe add --git-push and have gto do this. it would lower some friction. Not sure it's a good idea making this default behavior though
Since @francesco086 is implementing very much useful --auto-push option, there is this case that may happen now. It could be that we have some Git tags locally, but don't have them in remote. Then if you run --auto-push in locally cloned repo, you'll decide what to do based on the local repo, but you will try to apply it to the remote one. It could be an error in some cases (you try to remove a remote Git tag that doesn't exist in remote). It could be a incorrect decision (you deprecate a version that doesn't exist in the remote).
For simplicity, I would consider running gto status check before executing --auto-push and fail if local and remote repos diverge in tags. This could be of course more locally defined: e.g. you want to push 2 tags and one of these tags do exist in remote, you fail. No need to compare all other tags in this case. But, it could be much more involved (e.g. you assign a stage to a registered version and push assignment tag, but the remote repo don't have a tag that registers a version - the CI job could behave differently than you would expect). Need to consider this after gto status implementation.
I think this ticket is a very good idea! Such command may be of big help.