docs/tutorial/prepare.sh
author Kyle Lippincott <spectral@google.com>
Mon, 16 Sep 2019 12:44:38 -0700
changeset 4848 535ab2609e45
parent 3376 aad37ffd7d58
permissions -rwxr-xr-x
cmdstate: introduce a "saver" contextmanager and use it in place of save() Previously, the state was only saved in some paths out of these functions. This can be problematic, if the user ctrl-c's (or `kill -9`'s) the process, or we exit out of `relocate` for anything besides the "expected" reason, we won't record that we were in the middle of an evolve. One of our users has discovered that this leaves hg in a weird state; the user did something like this: ``` $ hg evolve <something goes wrong with the merge tool, hits ctrl-c> <deals with the merge conflicts> $ hg evolve --continue abort: no interrupted evolve to continue $ hg evolve abort: uncommitted changes # Note: commands.status.verbose=True is set. $ hg status M foo # The repository is in an unfinished *update* state. # No unresolved merge conflicts # To continue: hg update ``` The user did an `hg update`, but it didn't actually do anything besides take it out of the unfinished update state (the files were still dirty in the working directory).

#!/bin/bash
set -euo pipefail

# Prepare pandoc filters
if [ -d pandocfilters/.git ]; then
    (cd pandocfilters && git remote update && git merge --ff-only)
else
    git clone https://github.com/Lothiraldan/pandocfilters.git
fi

pip2 install pandocfilters
pip2 install pygraphviz
pip2 install panflute
pip2 install hg+https://bitbucket.org/octobus/mercurial_docgraph
pip2 install hg-evolve

mkdir -p graphs output

CMD_NOT_FOUND=0
check_command() {
    cmd=$1
    if ! which "$cmd" >/dev/null 2>&1; then
        echo "Error: command '$cmd' not found in \$PATH"
        echo "Please install '$cmd'"
        CMD_NOT_FOUND=1
    else
        echo "$cmd command was found"
    fi
}

check_command pandoc
check_command aha

if [ "$CMD_NOT_FOUND" -ne "0" ]; then
    exit 1
fi

# Prepare directory for repositories generated by the training.t file
mkdir -p base-repos

rm -Rf base-repos/*