diff --git a/go/libraries/doltcore/doltdb/workingset.go b/go/libraries/doltcore/doltdb/workingset.go index 44f3fa2e06..6f7966ee2f 100755 --- a/go/libraries/doltcore/doltdb/workingset.go +++ b/go/libraries/doltcore/doltdb/workingset.go @@ -136,6 +136,7 @@ func (ws WorkingSet) StartMerge(commit *Commit) *WorkingSet { func (ws WorkingSet) AbortMerge() *WorkingSet { ws.workingRoot = ws.mergeState.PreMergeWorkingRoot() + ws.stagedRoot = ws.workingRoot ws.mergeState = nil return &ws } diff --git a/integration-tests/bats/merge.bats b/integration-tests/bats/merge.bats index a8b2de61a8..20be61c911 100644 --- a/integration-tests/bats/merge.bats +++ b/integration-tests/bats/merge.bats @@ -88,6 +88,30 @@ teardown() { [[ "${lines[1]}" =~ "9,9,9" ]] || false } +@test "merge: --abort leaves clean working, staging roots" { + dolt branch other + + dolt sql -q "INSERT INTO test1 VALUES (1,10,10);" + dolt commit -am "added rows to test1 on master" + + dolt checkout other + dolt sql -q "INSERT INTO test1 VALUES (2,20,20);" + dolt commit -am "added rows to test1 on other" + + dolt checkout master + dolt merge other + run dolt status + [ "$status" -eq 0 ] + [[ "$output" =~ "still merging" ]] || false + [[ "$output" =~ "modified: test" ]] || false + + dolt merge --abort + run dolt status + [ "$status" -eq 0 ] + [[ "${lines[0]}" =~ "On branch master" ]] || false + [[ "${lines[1]}" =~ "nothing to commit, working tree clean" ]] || false +} + @test "merge: squash merge" { dolt checkout -b merge_branch dolt SQL -q "INSERT INTO test1 values (0,1,2)" diff --git a/integration-tests/bats/sql-merge.bats b/integration-tests/bats/sql-merge.bats index f1b5bf17bb..2a0dfe6b52 100644 --- a/integration-tests/bats/sql-merge.bats +++ b/integration-tests/bats/sql-merge.bats @@ -348,6 +348,37 @@ SQL [[ "$output" =~ "9,9,9" ]] || false } + +@test "sql-merge: DOLT_MERGE(--abort) clears index state" { + run dolt sql --disable-batch << SQL +set autocommit = off; +CREATE TABLE one_pk ( + pk1 BIGINT NOT NULL, + c1 BIGINT, + c2 BIGINT, + PRIMARY KEY (pk1) +); +SELECT DOLT_COMMIT('-a', '-m', 'add tables'); +SELECT DOLT_CHECKOUT('-b', 'feature-branch'); +SELECT DOLT_CHECKOUT('master'); +INSERT INTO one_pk (pk1,c1,c2) VALUES (0,0,0); +SELECT DOLT_COMMIT('-a', '-m', 'changed master'); +SELECT DOLT_CHECKOUT('feature-branch'); +INSERT INTO one_pk (pk1,c1,c2) VALUES (0,1,1); +SELECT DOLT_COMMIT('-a', '-m', 'changed feature branch'); +SELECT DOLT_CHECKOUT('master'); +SELECT DOLT_MERGE('feature-branch'); +SELECT DOLT_MERGE('--abort'); +commit; +SQL + [ $status -eq 0 ] + + run dolt status + [ "$status" -eq 0 ] + [[ "${lines[0]}" =~ "On branch master" ]] || false + [[ "${lines[1]}" =~ "nothing to commit, working tree clean" ]] || false +} + @test "sql-merge: DOLT_MERGE with unresolved conflicts throws an error" { run dolt sql << SQL CREATE TABLE one_pk (