mirror of
https://github.com/dolthub/dolt.git
synced 2026-03-01 18:19:12 -06:00
Pass through the --force flag for branch deletes
This commit is contained in:
21
go/libraries/doltcore/env/actions/remotes.go
vendored
21
go/libraries/doltcore/env/actions/remotes.go
vendored
@@ -137,7 +137,7 @@ func push(ctx context.Context, rsr env.RepoStateReader, tmpDir string, src, dest
|
||||
switch opts.SrcRef.GetType() {
|
||||
case ref.BranchRefType:
|
||||
if opts.SrcRef == ref.EmptyBranchRef {
|
||||
return deleteRemoteBranch(ctx, opts.DestRef, opts.RemoteRef, src, dest, *remote)
|
||||
return deleteRemoteBranch(ctx, opts.DestRef, opts.RemoteRef, src, dest, *remote, opts.Mode.Force)
|
||||
} else {
|
||||
return PushToRemoteBranch(ctx, rsr, tmpDir, opts.Mode, opts.SrcRef, opts.DestRef, opts.RemoteRef, src, dest, *remote, progStarter, progStopper)
|
||||
}
|
||||
@@ -192,8 +192,8 @@ func PushTag(ctx context.Context, tempTableDir string, destRef ref.TagRef, srcDB
|
||||
return destDB.SetHead(ctx, destRef, addr)
|
||||
}
|
||||
|
||||
func deleteRemoteBranch(ctx context.Context, toDelete, remoteRef ref.DoltRef, localDB, remoteDB *doltdb.DoltDB, remote env.Remote) error {
|
||||
err := DeleteRemoteBranch(ctx, toDelete.(ref.BranchRef), remoteRef.(ref.RemoteRef), localDB, remoteDB)
|
||||
func deleteRemoteBranch(ctx context.Context, toDelete, remoteRef ref.DoltRef, localDB, remoteDB *doltdb.DoltDB, remote env.Remote, force bool) error {
|
||||
err := DeleteRemoteBranch(ctx, toDelete.(ref.BranchRef), remoteRef.(ref.RemoteRef), localDB, remoteDB, force)
|
||||
|
||||
if err != nil {
|
||||
return fmt.Errorf("%w; '%s' from remote '%s'; %s", ErrFailedToDeleteRemote, toDelete.String(), remote.Name, err)
|
||||
@@ -262,19 +262,24 @@ func pushTagToRemote(ctx context.Context, tempTableDir string, srcRef, destRef r
|
||||
|
||||
// DeleteRemoteBranch validates targetRef is a branch on the remote database, and then deletes it, then deletes the
|
||||
// remote tracking branch from the local database.
|
||||
func DeleteRemoteBranch(ctx context.Context, targetRef ref.BranchRef, remoteRef ref.RemoteRef, localDB, remoteDB *doltdb.DoltDB) error {
|
||||
func DeleteRemoteBranch(ctx context.Context, targetRef ref.BranchRef, remoteRef ref.RemoteRef, localDB, remoteDB *doltdb.DoltDB, force bool) error {
|
||||
hasRef, err := remoteDB.HasRef(ctx, targetRef)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
wsRef, err := ref.WorkingSetRefForHead(targetRef)
|
||||
if err != nil {
|
||||
return err
|
||||
wsRefStr := ""
|
||||
if !force {
|
||||
wsRef, err := ref.WorkingSetRefForHead(targetRef)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
wsRefStr = wsRef.String()
|
||||
}
|
||||
|
||||
if hasRef {
|
||||
err = remoteDB.DeleteBranchWithWorkspaceCheck(ctx, targetRef, nil, wsRef.String())
|
||||
err = remoteDB.DeleteBranchWithWorkspaceCheck(ctx, targetRef, nil, wsRefStr)
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
|
||||
@@ -577,9 +577,8 @@ GRANT CLONE_ADMIN ON *.* TO clone_admin_user@'localhost';
|
||||
dolt sql -q 'insert into names (name) values ("abe"), ("betsy"), ("calvin");'
|
||||
dolt add names
|
||||
dolt commit -m 'initial names.'
|
||||
dolt checkout -b new_branch HEAD
|
||||
dolt sql -q 'insert into names (name) values ("zeek");' # dirty the workspace
|
||||
dolt checkout main
|
||||
dolt branch new_branch HEAD
|
||||
dolt --use-db=remote/new_branch sql -q 'insert into names (name) values ("zeek");' # dirty the workspace
|
||||
|
||||
APIPORT=$(definePORT)
|
||||
export DOLT_REMOTE_PASSWORD="rootpass"
|
||||
@@ -594,8 +593,7 @@ GRANT CLONE_ADMIN ON *.* TO clone_admin_user@'localhost';
|
||||
[[ "$status" -ne 0 ]] || false
|
||||
[[ "$output" =~ "target has uncommitted changes. --force required to overwrite" ]] || false
|
||||
|
||||
run dolt push origin --force --user $SQL_USER :new_branch
|
||||
[[ "$status" -eq 0 ]] || false
|
||||
dolt push origin --force --user $SQL_USER :new_branch
|
||||
|
||||
# TODO - verify output. Currently we always print "new branch"
|
||||
# To https://doltremoteapi.dolthub.com/dolthub/macneale-remote-test
|
||||
|
||||
Reference in New Issue
Block a user