mirror of
https://github.com/martinvonz/jj.git
synced 2024-09-11 13:56:29 +03:00
demos: add a --fast mode to speed up recording
It can take quite a while to record a demo. This patch adds a `--fast` flag for reducing delays to a tenth of the usual. You can play the recording with `asciinema play -s 0.1` to get close-to-normal speed (except that command delays will be slower). That way you can adjust timings with shorter round-trips.
This commit is contained in:
parent
2a5f0991fa
commit
78050b3d42
@ -9,13 +9,13 @@ run_demo 'Clone a Git repo' '
|
|||||||
run_command "# Clone a Git repo:"
|
run_command "# Clone a Git repo:"
|
||||||
run_command "jj git clone https://github.com/octocat/Hello-World"
|
run_command "jj git clone https://github.com/octocat/Hello-World"
|
||||||
run_command "cd Hello-World"
|
run_command "cd Hello-World"
|
||||||
sleep 1
|
pause 1
|
||||||
run_command "# Inspect it:"
|
run_command "# Inspect it:"
|
||||||
sleep 1
|
pause 1
|
||||||
run_command "jj log"
|
run_command "jj log"
|
||||||
sleep 5
|
pause 5
|
||||||
run_command "jj diff -r b1"
|
run_command "jj diff -r b1"
|
||||||
sleep 2
|
pause 2
|
||||||
run_command "# The repo is backed by the actual Git repo:"
|
run_command "# The repo is backed by the actual Git repo:"
|
||||||
run_command "git --git-dir=.jj/store/git log --graph --all --decorate --oneline"
|
run_command "git --git-dir=.jj/store/git log --graph --all --decorate --oneline"
|
||||||
'
|
'
|
||||||
|
@ -5,6 +5,7 @@ BASE_DIR=$(realpath "$(dirname "$0")")
|
|||||||
UPLOAD=false
|
UPLOAD=false
|
||||||
PREVIEW=false
|
PREVIEW=false
|
||||||
DEBUG=false
|
DEBUG=false
|
||||||
|
FAST=false
|
||||||
parse_args() {
|
parse_args() {
|
||||||
for arg in "$@"; do
|
for arg in "$@"; do
|
||||||
case "$arg" in
|
case "$arg" in
|
||||||
@ -27,6 +28,9 @@ Arguments:
|
|||||||
--debug)
|
--debug)
|
||||||
DEBUG=true
|
DEBUG=true
|
||||||
;;
|
;;
|
||||||
|
--fast)
|
||||||
|
FAST=true
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Unrecognized argument: $arg"
|
echo "Unrecognized argument: $arg"
|
||||||
exit 1
|
exit 1
|
||||||
@ -46,7 +50,16 @@ new_tmp_dir() {
|
|||||||
run_demo() {
|
run_demo() {
|
||||||
local title="$1"
|
local title="$1"
|
||||||
local test_script="$2"
|
local test_script="$2"
|
||||||
|
local fast=""
|
||||||
|
if [[ "$FAST" == true ]]; then
|
||||||
|
fast="set send_human {0.005 0.01 1 0.005 0.1}
|
||||||
|
proc pause {duration} {
|
||||||
|
sleep [expr \$duration / 10.0]
|
||||||
|
}
|
||||||
|
"
|
||||||
|
fi
|
||||||
local expect_script="source $BASE_DIR/demo_helpers.tcl
|
local expect_script="source $BASE_DIR/demo_helpers.tcl
|
||||||
|
$fast
|
||||||
spawn asciinema rec -c \"PS1='$ ' bash --norc\" --title \"$title\"
|
spawn asciinema rec -c \"PS1='$ ' bash --norc\" --title \"$title\"
|
||||||
expect_prompt
|
expect_prompt
|
||||||
$test_script
|
$test_script
|
||||||
|
@ -1,6 +1,10 @@
|
|||||||
set send_human {0.05 0.1 1 0.05 1}
|
set send_human {0.05 0.1 1 0.05 1}
|
||||||
set timeout 2
|
set timeout 2
|
||||||
|
|
||||||
|
proc pause {duration} {
|
||||||
|
sleep $duration
|
||||||
|
}
|
||||||
|
|
||||||
proc expect_prompt {} {
|
proc expect_prompt {} {
|
||||||
expect "$ "
|
expect "$ "
|
||||||
}
|
}
|
||||||
|
@ -11,26 +11,26 @@ run_demo 'The entire repo is under version control' '
|
|||||||
run_command "# We are in the octocat/Hello-World repo."
|
run_command "# We are in the octocat/Hello-World repo."
|
||||||
run_command "# The \"operation log\" shows the operations so far:"
|
run_command "# The \"operation log\" shows the operations so far:"
|
||||||
run_command "jj op log"
|
run_command "jj op log"
|
||||||
sleep 7
|
pause 7
|
||||||
run_command "# We are going to make some changes so we can see how the operation log works."
|
run_command "# We are going to make some changes so we can see how the operation log works."
|
||||||
run_command "# We are currently working off of the \"master\" branch:"
|
run_command "# We are currently working off of the \"master\" branch:"
|
||||||
run_command "jj log"
|
run_command "jj log"
|
||||||
sleep 5
|
pause 5
|
||||||
run_command "# Let'\''s add a file, set a description, and rebase onto the \"test\" branch:"
|
run_command "# Let'\''s add a file, set a description, and rebase onto the \"test\" branch:"
|
||||||
run_command "echo stuff > new-file"
|
run_command "echo stuff > new-file"
|
||||||
sleep 2
|
pause 2
|
||||||
run_command "jj describe -m stuff"
|
run_command "jj describe -m stuff"
|
||||||
sleep 2
|
pause 2
|
||||||
run_command "jj rebase -d test"
|
run_command "jj rebase -d test"
|
||||||
sleep 2
|
pause 2
|
||||||
run_command "# We are now going to make another change off of master:"
|
run_command "# We are now going to make another change off of master:"
|
||||||
run_command "jj co master"
|
run_command "jj co master"
|
||||||
sleep 1
|
pause 1
|
||||||
run_command "jj describe -m \"other stuff\""
|
run_command "jj describe -m \"other stuff\""
|
||||||
sleep 2
|
pause 2
|
||||||
run_command "# The repo now looks like this:"
|
run_command "# The repo now looks like this:"
|
||||||
run_command "jj log"
|
run_command "jj log"
|
||||||
sleep 5
|
pause 5
|
||||||
run_command "# And the operation log looks like this:"
|
run_command "# And the operation log looks like this:"
|
||||||
send -h "jj op log\r"
|
send -h "jj op log\r"
|
||||||
# Capture the third latest operation id (skipping color codes around it)
|
# Capture the third latest operation id (skipping color codes around it)
|
||||||
@ -38,19 +38,19 @@ expect -re "o ..34m(.*?)..0m "
|
|||||||
expect -re "o ..34m(.*?)..0m "
|
expect -re "o ..34m(.*?)..0m "
|
||||||
set rebase_op $expect_out(1,string)
|
set rebase_op $expect_out(1,string)
|
||||||
expect_prompt
|
expect_prompt
|
||||||
sleep 7
|
pause 7
|
||||||
run_command "# Let'\''s undo that rebase operation:"
|
run_command "# Let'\''s undo that rebase operation:"
|
||||||
run_command "jj undo -o $rebase_op"
|
run_command "jj undo -o $rebase_op"
|
||||||
sleep 3
|
pause 3
|
||||||
run_command "# The \"stuff\" change is now back on master as expected:"
|
run_command "# The \"stuff\" change is now back on master as expected:"
|
||||||
run_command "jj log"
|
run_command "jj log"
|
||||||
sleep 5
|
pause 5
|
||||||
run_command "# We can also see what the repo looked like after the rebase operation:"
|
run_command "# We can also see what the repo looked like after the rebase operation:"
|
||||||
run_command "jj --at-op $rebase_op log"
|
run_command "jj --at-op $rebase_op log"
|
||||||
sleep 5
|
pause 5
|
||||||
run_command "# Looks nice, let'\''s go back to that point:"
|
run_command "# Looks nice, let'\''s go back to that point:"
|
||||||
run_command "jj op restore -o $rebase_op"
|
run_command "jj op restore -o $rebase_op"
|
||||||
sleep 2
|
pause 2
|
||||||
run_command "# We'\''re now back to before the \"other stuff\" change existed:"
|
run_command "# We'\''re now back to before the \"other stuff\" change existed:"
|
||||||
run_command "jj log"
|
run_command "jj log"
|
||||||
'
|
'
|
||||||
|
@ -11,34 +11,34 @@ run_demo 'The working copy is automatically committed' '
|
|||||||
run_command "# We are in the octocat/Hello-World repo."
|
run_command "# We are in the octocat/Hello-World repo."
|
||||||
run_command "# We have an empty working copy on top of master:"
|
run_command "# We have an empty working copy on top of master:"
|
||||||
run_command "jj log"
|
run_command "jj log"
|
||||||
sleep 5
|
pause 5
|
||||||
run_command "jj status"
|
run_command "jj status"
|
||||||
sleep 2
|
pause 2
|
||||||
run_command "# Now make some changes in the working copy:"
|
run_command "# Now make some changes in the working copy:"
|
||||||
run_command "echo \"Goodbye World!\" > README"
|
run_command "echo \"Goodbye World!\" > README"
|
||||||
run_command "echo stuff > new-file"
|
run_command "echo stuff > new-file"
|
||||||
run_command "# Our working copy commit id changed because we made changes:"
|
run_command "# Our working copy commit id changed because we made changes:"
|
||||||
run_command "jj status"
|
run_command "jj status"
|
||||||
sleep 5
|
pause 5
|
||||||
run_command "# Add a branch so we can easily refer to this commit:"
|
run_command "# Add a branch so we can easily refer to this commit:"
|
||||||
run_command "jj branch goodbye"
|
run_command "jj branch goodbye"
|
||||||
sleep 2
|
pause 2
|
||||||
run_command "# Start working on a new change off of master:"
|
run_command "# Start working on a new change off of master:"
|
||||||
run_command "jj co master"
|
run_command "jj co master"
|
||||||
sleep 2
|
pause 2
|
||||||
run_command "# Note that the working copy is now clean; the \"goodbye\" change stayed in its own commit:"
|
run_command "# Note that the working copy is now clean; the \"goodbye\" change stayed in its own commit:"
|
||||||
run_command "jj status"
|
run_command "jj status"
|
||||||
sleep 5
|
pause 5
|
||||||
run_command "# Modify a file in this new change:"
|
run_command "# Modify a file in this new change:"
|
||||||
run_command "echo \"Hello everyone!\" > README"
|
run_command "echo \"Hello everyone!\" > README"
|
||||||
sleep 2
|
pause 2
|
||||||
run_command "# The working copy is not special; we can, for example, set the description of any commit."
|
run_command "# The working copy is not special; we can, for example, set the description of any commit."
|
||||||
run_command "# First, set it on the working copy:"
|
run_command "# First, set it on the working copy:"
|
||||||
run_command "jj describe -m everyone"
|
run_command "jj describe -m everyone"
|
||||||
sleep 2
|
pause 2
|
||||||
run_command "# Now set it on the change we worked on before:"
|
run_command "# Now set it on the change we worked on before:"
|
||||||
run_command "jj describe goodbye -m goodbye"
|
run_command "jj describe goodbye -m goodbye"
|
||||||
sleep 2
|
pause 2
|
||||||
run_command "# Inspect the result:"
|
run_command "# Inspect the result:"
|
||||||
run_command "jj log"
|
run_command "jj log"
|
||||||
'
|
'
|
||||||
|
Loading…
Reference in New Issue
Block a user