mirror of
https://github.com/dolthub/dolt.git
synced 2026-04-29 11:31:28 -05:00
restore pre-merge working set on merge --abort
This commit is contained in:
+24
-2
@@ -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)"
|
||||
|
||||
@@ -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
@@ -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
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user