Draft and Commit#
The version control is based on the draft and commit.
Similar with Git, a commit is a version of a dataset, which contains the changes compared with the former commit.
Unlike Git, a draft is a new concept which represents a workspace in which changing the dataset is allowed.
In TensorBay SDK, the dataset client supplies the function of version control.
Create Draft#
TensorBay SDK supports creating the draft straightforwardly, which is based on the current branch. Note that currently there can be only one open draft in each branch.
dataset_client.create_draft("draft-1")
Then the dataset client will change the status to “draft” and store the draft number. The draft number will be auto-increasing every time a draft is created.
is_draft = dataset_client.status.is_draft
# is_draft = True (True for draft, False for commit)
draft_number = dataset_client.status.draft_number
# draft_number = 1
branch_name = dataset_client.status.branch_name
# branch_name = main
Also, TensorBay SDK supports creating a draft based on a given branch.
dataset_client.create_draft("draft-1", branch_name="main")
List Drafts#
The draft number can be found through listing drafts.
status
includes “OPEN”, “CLOSED”, “COMMITTED” and None where None means listing drafts in all status.
branch_name
refers to the branch name of the draft to be listed.
drafts = dataset_client.list_drafts(status="CLOSED", branch_name="branch-1")
Get Draft#
draft = dataset_client.get_draft(draft_number=1)
Commit Draft#
After the commit, the draft will be closed.
dataset_client.commit("commit-1", "commit description")
is_draft = dataset_client.status.is_draft
# is_draft = False (True for draft, False for commit)
commit_id = dataset_client.status.commit_id
# commit_id = "***"
Get Commit#
commit = dataset_client.get_commit(commit_id)
List Commits#
commits = dataset_client.list_commits()
Checkout#
# checkout to the draft.
dataset_client.checkout(draft_number=draft_number)
# checkout to the commit.
dataset_client.checkout(revision=commit_id)
Note
Here, revision is the information to locate the specific commit, which can be the commit id, the branch, or the tag.