diff --git a/go/store/cmd/noms/noms_root.go b/go/store/cmd/noms/noms_root.go index 8086b7e231..8704e596ca 100644 --- a/go/store/cmd/noms/noms_root.go +++ b/go/store/cmd/noms/noms_root.go @@ -25,21 +25,20 @@ import ( "context" "fmt" "os" - "strings" flag "github.com/juju/gnuflag" "github.com/dolthub/dolt/go/store/cmd/noms/util" "github.com/dolthub/dolt/go/store/config" "github.com/dolthub/dolt/go/store/d" - "github.com/dolthub/dolt/go/store/hash" + "github.com/dolthub/dolt/go/store/datas" "github.com/dolthub/dolt/go/store/types" ) var nomsRoot = &util.Command{ Run: runRoot, UsageLine: "root ", - Short: "Get or set the current root hash of the entire database", + Short: "Get the current root hash of the entire database", Long: "See Spelling Objects at https://github.com/attic-labs/noms/blob/master/doc/spelling.md for details on the database argument.", Flags: setupRootFlags, Nargs: 1, @@ -49,7 +48,6 @@ var updateRoot = "" func setupRootFlags() *flag.FlagSet { flagSet := flag.NewFlagSet("root", flag.ExitOnError) - flagSet.StringVar(&updateRoot, "update", "", "Replaces the entire database with the one with the given hash") return flagSet } @@ -60,70 +58,16 @@ func runRoot(ctx context.Context, args []string) int { } cfg := config.NewResolver() - cs, err := cfg.GetChunkStore(ctx, args[0]) + db, _, _, err := cfg.GetDatabase(ctx, args[0]) util.CheckErrorNoUsage(err) - defer cs.Close() - - currRoot, err := cs.Root(ctx) - + defer db.Close() + currRoot, err := datas.ChunkStoreFromDatabase(db).Root(ctx) if err != nil { fmt.Fprintln(os.Stderr, "error getting root.", err) return 1 } - if updateRoot == "" { - fmt.Println(currRoot) - return 0 - } - - if updateRoot[0] == '#' { - updateRoot = updateRoot[1:] - } - h, ok := hash.MaybeParse(updateRoot) - if !ok { - fmt.Fprintf(os.Stderr, "Invalid hash: %s\n", h.String()) - return 1 - } - - // If BUG 3407 is correct, we might be able to just take cs and make a Database directly from that. - db, vrw, _, err := cfg.GetDatabase(ctx, args[0]) - util.CheckErrorNoUsage(err) - defer db.Close() - v, err := vrw.ReadValue(ctx, h) - util.CheckErrorNoUsage(err) - if !validate(ctx, vrw.Format(), v) { - return 1 - } - - fmt.Println(`WARNING - -This operation replaces the entire database with the instance having the given -hash. The old database becomes eligible for GC. - -ANYTHING NOT SAVED WILL BE LOST - -Continue?`) - - var input string - n, err := fmt.Scanln(&input) - util.CheckErrorNoUsage(err) - if n != 1 || strings.ToLower(input) != "y" { - return 0 - } - - ok, err = cs.Commit(ctx, h, currRoot) - - if err != nil { - fmt.Fprintf(os.Stderr, "commit error: %s", err.Error()) - return 1 - } - - if !ok { - fmt.Fprintln(os.Stderr, "Optimistic concurrency failure") - return 1 - } - - fmt.Printf("Success. Previous root was: %s\n", currRoot) + fmt.Println(currRoot) return 0 } diff --git a/go/store/cmd/noms/splunk.pl b/go/store/cmd/noms/splunk.pl index 251e135d79..fce7847677 100755 --- a/go/store/cmd/noms/splunk.pl +++ b/go/store/cmd/noms/splunk.pl @@ -12,8 +12,7 @@ if (! check_exists_command('noms')) { print "Welcome to the splunk shell for exploring dolt repository storage.\n"; -my $manifest = `noms manifest $noms_dir`; -my $root = get_root($manifest); +my $root = `noms root $noms_dir`; my $message = "Currently examining root.\nUse numeric labels to navigate the tree\n.. to back up a level, / to return to root.\nType quit or exit to exit.\n";