restore pre-merge working set on merge --abort

This commit is contained in:
Andy Arthur
2021-02-21 19:27:29 -08:00
parent 33af2cb987
commit 2380267ed3
5 changed files with 32 additions and 4 deletions
+24 -2
View File
@@ -10,8 +10,6 @@ CREATE TABLE test1 (
c2 int,
PRIMARY KEY (pk)
);
SQL
dolt sql <<SQL
CREATE TABLE test2 (
pk int NOT NULL,
c1 int,
@@ -66,6 +64,30 @@ teardown() {
[[ "$output" =~ "add pk 1 to test1" ]] || false
}
@test "merge --abort restores working changes" {
dolt branch other
dolt sql -q "INSERT INTO test1 VALUES (0,10,10),(1,11,11);"
dolt commit -am "added rows to test1 on master"
dolt checkout other
dolt sql -q "INSERT INTO test1 VALUES (0,20,20),(1,21,21);"
dolt commit -am "added rows to test1 on other"
dolt checkout master
# dirty the working set with changes to test2
dolt sql -q "INSERT INTO test2 VALUES (9,9,9);"
dolt merge other
dolt merge --abort
# per Git, working set changes to test2 should remain
dolt sql -q "SELECT * FROM test2" -r csv
run dolt sql -q "SELECT * FROM test2" -r csv
[ "$status" -eq 0 ]
[[ "${lines[1]}" =~ "9,9,9" ]] || false
}
@test "squash merge" {
dolt checkout -b merge_branch
dolt SQL -q "INSERT INTO test1 values (0,1,2)"
+1 -1
View File
@@ -132,7 +132,7 @@ func abortMerge(ctx context.Context, doltEnv *env.DoltEnv) errhand.VerboseError
err := actions.CheckoutAllTables(ctx, doltEnv.DbData())
if err == nil {
err = doltEnv.RepoState.ClearMerge(doltEnv.FS)
err = doltEnv.RepoState.AbortMerge(doltEnv.FS)
if err == nil {
return nil
+5
View File
@@ -427,9 +427,14 @@ func (r *repoStateWriter) SetCWBHeadRef(ctx context.Context, marshalableRef ref.
return nil
}
func (r *repoStateWriter) AbortMerge() error {
return r.dEnv.RepoState.AbortMerge(r.dEnv.FS)
}
func (r *repoStateWriter) ClearMerge() error {
return r.dEnv.RepoState.ClearMerge(r.dEnv.FS)
}
func (r *repoStateWriter) StartMerge(commitStr string) error {
return r.dEnv.RepoState.StartMerge(commitStr, r.dEnv.FS)
}
+1
View File
@@ -41,6 +41,7 @@ type RepoStateWriter interface {
SetStagedHash(context.Context, hash.Hash) error
SetWorkingHash(context.Context, hash.Hash) error
SetCWBHeadRef(context.Context, ref.MarshalableRef) error
AbortMerge() error
ClearMerge() error
StartMerge(commitStr string) error
}
@@ -155,7 +155,7 @@ func abortMerge(ctx *sql.Context, dbData env.DbData) error {
return err
}
err = dbData.Rsw.ClearMerge()
err = dbData.Rsw.AbortMerge()
if err != nil {
return err
}