Squash and Merge#
TensorBay supports squashing and merging between different branches asynchronously.
Firstly, a dataset client instance with commits on different branches is needed. See more details in Draft and Commit.

Fig. 10 The graphical gas log about the squash and merge operation below.#
from tensorbay import GAS
# Please visit `https://gas.graviti.com/tensorbay/developer` to get the AccessKey.
gas = GAS("<YOUR_ACCESSKEY>")
dataset_client = gas.create_dataset("<DATASET_NAME>")
dataset_client.create_draft("draft-1")
dataset_client.commit("commit-1")
dataset_client.create_branch("dev")
dataset_client.create_draft("draft-2")
dataset_client.commit("commit-2")
dataset_client.create_draft("draft-3")
dataset_client.commit("commit-3")
dataset_client.checkout("main")
dataset_client.create_draft("draft-4")
dataset_client.commit("commit-4")
SquashAndMergeJob#
TensorBay SDK allows create, get, list or delete SquashAndMergeJob
via SquashAndMerge
.
Create#
In the case of creating a SquashAndMergeJob, the target_branch_name
could be given in advance:
job = dataset_client.squash_and_merge.create_job(
draft_title="draft-5",
source_branch_name="dev",
target_branch_name="main",
draft_description="draft_description",
strategy="override",
)
Or checkout
to the target_branch first. In this case, the current branch is main
, so we can create job directly.
job = dataset_client.squash_and_merge.create_job(
draft_title="draft-5",
source_branch_name="dev",
draft_description="draft_description",
strategy="override",
)
Note
There are three strategies for handling the branch conflict:
“abort”: abort the opetation;
“override”: the squashed branch will override the target branch;
“skip”: keep the origin branch.
Get, list or delete#
The latest SquashAndMergeJob can be obtained by get_job()
or list_jobs()
.
The finished SquashAndMergeJob can be deleted by delete_job()
.
job = dataset_client.squash_and_merge.get_job("jobId")
dataset_client.squash_and_merge.delete_job("jobId")
job = dataset_client.squash_and_merge.list_jobs()[0]
Get information#
Available SquashAndMergeJob information includes title
, description
, job_id
, arguments
, created_at
, started_at
, finished_at
,
status
, error_message
and result
.
job.status
job.result
job.error_message
job.arguments
Note
If the SquashAndMergeJob is successfully completed, the result will be a Draft
.
Update#
The latest information of a SquashAndMergeJob can be obtained after update()
. Note that if the until_complete
is
set to True
, the SquashAndMergeJob will be blocked until it is completed.
job.update()
job.update(until_complete=True)
Abort or retry#
SquashAndMergeJob also supports abort()
and retry()
:
job.abort()
job.retry()