mirror of
https://github.com/dolthub/dolt.git
synced 2026-03-15 19:31:03 -05:00
ambyii's escape commit tag (#4939)
* no newlines * Get uncommitted values for GC from datasets * Remove getGCKeepers * [no-release-notes] revert systab debugging (#4918) * Revert "no newlines" This reverts commita41db014cc. * Revert "indent error" This reverts commitf074dee15d. * Revert "starter (#4912)" This reverts commit02809af1b9. * Fix and tests for escaping commit messages Co-authored-by: Taylor Bantle <taylor@dolthub.com> Co-authored-by: Abdurrahmaan Iqbal <abdurrahmaaniqbal@hotmail.com>
This commit is contained in:
committed by
GitHub
parent
1466d9e9a9
commit
bd32265cc1
@@ -111,19 +111,12 @@ func (cmd GarbageCollectionCmd) Exec(ctx context.Context, commandStr string, arg
|
||||
} else {
|
||||
// full gc
|
||||
dEnv, err = MaybeMigrateEnv(ctx, dEnv)
|
||||
|
||||
if err != nil {
|
||||
verr = errhand.BuildDError("could not load manifest for gc").AddCause(err).Build()
|
||||
return HandleVErrAndExitCode(verr, usage)
|
||||
}
|
||||
|
||||
keepers, err := env.GetGCKeepers(ctx, dEnv)
|
||||
if err != nil {
|
||||
verr = errhand.BuildDError("an error occurred while saving working set").AddCause(err).Build()
|
||||
return HandleVErrAndExitCode(verr, usage)
|
||||
}
|
||||
|
||||
err = dEnv.DoltDB.GC(ctx, keepers...)
|
||||
err = dEnv.DoltDB.GC(ctx)
|
||||
if err != nil {
|
||||
if errors.Is(err, chunks.ErrNothingToCollect) {
|
||||
cli.PrintErrln(color.YellowString("Nothing to collect."))
|
||||
|
||||
@@ -569,7 +569,7 @@ func logCompact(pager *outputpager.Pager, opts *logOpts, commits []logNode) {
|
||||
}
|
||||
|
||||
formattedDesc := strings.Replace(comm.commitMeta.Description, "\n", " ", -1) + "\n"
|
||||
pager.Writer.Write([]byte(fmt.Sprintf(formattedDesc)))
|
||||
pager.Writer.Write([]byte(fmt.Sprintf("%s", formattedDesc)))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -607,7 +607,7 @@ func logDefault(pager *outputpager.Pager, opts *logOpts, commits []logNode) {
|
||||
pager.Writer.Write([]byte(fmt.Sprintf("\nDate: %s", timeStr)))
|
||||
|
||||
formattedDesc := "\n\n\t" + strings.Replace(comm.commitMeta.Description, "\n", "\n\t", -1) + "\n\n"
|
||||
pager.Writer.Write([]byte(fmt.Sprintf(formattedDesc)))
|
||||
pager.Writer.Write([]byte(fmt.Sprintf("%s", formattedDesc)))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1149,8 +1149,8 @@ func (ddb *DoltDB) Rebase(ctx context.Context) error {
|
||||
return datas.ChunkStoreFromDatabase(ddb.db).Rebase(ctx)
|
||||
}
|
||||
|
||||
// GC performs garbage collection on this ddb. Values passed in |uncommittedVals| will be temporarily saved during gc.
|
||||
func (ddb *DoltDB) GC(ctx context.Context, uncommittedVals ...hash.Hash) error {
|
||||
// GC performs garbage collection on this ddb.
|
||||
func (ddb *DoltDB) GC(ctx context.Context) error {
|
||||
collector, ok := ddb.db.Database.(datas.GarbageCollector)
|
||||
if !ok {
|
||||
return fmt.Errorf("this database does not support garbage collection")
|
||||
@@ -1165,7 +1165,8 @@ func (ddb *DoltDB) GC(ctx context.Context, uncommittedVals ...hash.Hash) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
newGen := hash.NewHashSet(uncommittedVals...)
|
||||
|
||||
newGen := make(hash.HashSet)
|
||||
oldGen := make(hash.HashSet)
|
||||
err = datasets.IterAll(ctx, func(keyStr string, h hash.Hash) error {
|
||||
var isOldGen bool
|
||||
|
||||
@@ -125,17 +125,11 @@ func testGarbageCollection(t *testing.T, test gcTest) {
|
||||
}
|
||||
}
|
||||
|
||||
working, err := dEnv.WorkingRoot(ctx)
|
||||
require.NoError(t, err)
|
||||
h, err := working.HashOf()
|
||||
require.NoError(t, err)
|
||||
// save working root during GC
|
||||
|
||||
err = dEnv.DoltDB.GC(ctx, h)
|
||||
err := dEnv.DoltDB.GC(ctx)
|
||||
require.NoError(t, err)
|
||||
test.postGCFunc(ctx, t, dEnv.DoltDB, res)
|
||||
|
||||
working, err = dEnv.WorkingRoot(ctx)
|
||||
working, err := dEnv.WorkingRoot(ctx)
|
||||
require.NoError(t, err)
|
||||
// assert all out rows are present after gc
|
||||
actual, err := sqle.ExecuteSelect(dEnv, working, test.query)
|
||||
|
||||
57
go/libraries/doltcore/env/environment.go
vendored
57
go/libraries/doltcore/env/environment.go
vendored
@@ -1129,63 +1129,6 @@ func (dEnv *DoltEnv) TempTableFilesDir() (string, error) {
|
||||
return absPath, nil
|
||||
}
|
||||
|
||||
// GetGCKeepers returns the hashes of all the objects in the environment provided that should be preserved during GC.
|
||||
// TODO: this should be unnecessary since we now store the working set in a noms dataset, remove it
|
||||
func GetGCKeepers(ctx context.Context, env *DoltEnv) ([]hash.Hash, error) {
|
||||
workingRoot, err := env.WorkingRoot(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
workingHash, err := workingRoot.HashOf()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
stagedRoot, err := env.StagedRoot(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
stagedHash, err := stagedRoot.HashOf()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
keepers := []hash.Hash{
|
||||
workingHash,
|
||||
stagedHash,
|
||||
}
|
||||
|
||||
mergeActive, err := env.IsMergeActive(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if mergeActive {
|
||||
ws, err := env.WorkingSet(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
cm := ws.MergeState().Commit()
|
||||
ch, err := cm.HashOf()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
pmw := ws.MergeState().PreMergeWorkingRoot()
|
||||
pmwh, err := pmw.HashOf()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
keepers = append(keepers, ch, pmwh)
|
||||
}
|
||||
|
||||
return keepers, nil
|
||||
}
|
||||
|
||||
func (dEnv *DoltEnv) DbEaFactory() editor.DbEaFactory {
|
||||
tmpDir, err := dEnv.TempTableFilesDir()
|
||||
if err != nil {
|
||||
|
||||
@@ -626,4 +626,9 @@ teardown() {
|
||||
|
||||
run expect $BATS_TEST_DIRNAME/log.expect
|
||||
[ "$status" -eq 0 ]
|
||||
}
|
||||
}
|
||||
|
||||
@test "log: string formatting characters are escaped" {
|
||||
run dolt commit --allow-empty -m "% should be escaped"
|
||||
[[ "$output" =~ "% should be escaped" ]] || false
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user