What's the difference between tag and release?

Using GitHub's API, I can't get the releases list, but I can get the tags list.

What's the difference between them?


Solution 1:

What's the difference between them?

A tag is a pointer to a specific commit. This pointer can be super charged with some additional information (identity of the creator of the tag, a description, a GPG signature, ...).

A tag is a git concept whereas a Release is GitHub higher level concept.

As stated in the official announcement post from the GitHub blog: "Releases are first-class objects with changelogs and binary assets that present a full project history beyond Git artifacts."

A Release is created from an existing tag and exposes release notes and links to download the software or source code from GitHub.

Using GitHub's API, I can't get the releases list, but I can get the tags list.

The current version of the GitHub API doesn't expose a way to manage Releases (create, update, ...). I'm pretty sure that this shouldn't take too long before it's exposed.

However, it's currently possible to list the releases and tags of a specific repository.

For instance, the url below will list the 6 releases (as of today) from ReactiveUI

  • https://api.github.com/repos/reactiveui/ReactiveUI/releases

Whereas this one will list the 54 tags (as of today) from the same repository

  • https://api.github.com/repos/reactiveui/ReactiveUI/tags

Creating a release is currently in a process which involves a manual action (adding the release notes, uploading the packages, ...). This explains why tags are not transparently seen as Releases.


If you want to be notified of the API changes, you can subscribe to the GitHub API Changes blog.

However, if you can't wait, the GitHub API home page states "If you have any problems or requests please contact support.". This can be done through an email to [email protected] or this contact form.

Update:

The GitHub API now allows to manipulate Releases. See the announcement.