A bit late to the party, but I just tried #12653 and noticed some non-intuitive behavior (on macOS), that's probably worth explaining release notes and help.

Before this new feature I kept the entire datadir on an SSD drive, so I launch with: `bitcoind -datadir=/Volumes/SSD/Bitcoin`.

Initially I naively moved `/Volumes/SSD/Bitcoin/blocks` to `/Users/bitcoin/blocks` and added a line to `/Volumes/SSD/Bitcoin/bitcoin.conf`: `blocksdir=/Users/bitcoin/blocks`.

I then realized that I shouldn't have moved the `index` subdirectory, so I moved that back to `/Volumes/SSD/Bitcoin/blocks/index`. Having an empty `blocks` dir with just and `index` subdir is a bit weird. Perhaps after @jimpo's #11857 is merged, we could just move / assume all indexes to be there (if `-blocksdir` is set)?

Worse, it created a directory `/Users/bitcoin/blocks/blocks`, which seems like a bug. I had to set `blocksdir=/Users/bitcoin` instead.
CAmount n = 0;
        if (!ParseMoney(gArgs.GetArg("-incrementalrelayfee", ""), n))
            return InitError(AmountErrMsg("incrementalrelayfee", gArgs.GetArg("-incrementalrelayfee", "")));
        incrementalRelayFee = CFeeRate(n);
    }
    
    nScriptCheckThreads = gArgs.GetArg("-par", DEFAULT_SCRIPTCHECK_THREADS);
    if (nScriptCheckThreads <= 0)
        nScriptCheckThreads += GetNumCores();
    if (nScriptCheckThreads <= 1)
        nScriptCheckThreads = 0;
    else if (nScriptCheckThreads > MAX_SCRIPTCHECK_THREADS)
        nScriptCheckThreads = MAX_SCRIPTCHECK_THREADS;
    
    int64_t nPruneArg = gArgs.GetArg("-prune", 0);
    if (nPruneArg < 0) {
        return InitError(_("Prune cannot be configured with a negative value."));
    }
    nPruneTarget = (uint64_t) nPruneArg * 1024 * 1024;
    if (nPruneArg == 1) {  
        LogPrintf("Block pruning enabled.  Use RPC call pruneblockchain(height) to manually prune block and undo files.\n");
        nPruneTarget = std::numeric_limits<uint64_t>::max();
        fPruneMode = true;
    } else if (nPruneTarget) {
        if (nPruneTarget < MIN_DISK_SPACE_FOR_BLOCK_FILES) {
            return InitError(strprintf(_("Prune configured below the minimum of %d MiB.  Please use a higher number."), MIN_DISK_SPACE_FOR_BLOCK_FILES / 1024 / 1024));
        }
        LogPrintf("Prune configured to target %uMiB on disk for block and undo files.\n", nPruneTarget / 1024 / 1024);
        fPruneMode = true;
    }