From 854876b252d5bb1b036c9e8c75da65d932966c14 Mon Sep 17 00:00:00 2001 From: Ilya Grigoriev Date: Sat, 9 Sep 2023 21:17:47 -0700 Subject: [PATCH] demos: rearrange and reword portions of demos This is mainly to account for the fact that most commands now report more information about the state of the repo. --- demos/demo_git_compat.sh | 1 + demos/demo_juggle_conflicts.sh | 10 +- demos/demo_operation_log.sh | 8 +- demos/demo_resolve_conflicts.sh | 13 +- demos/demo_working_copy.sh | 32 +++-- demos/git_compat.svg | 47 +++---- demos/helpers.sh | 8 ++ demos/juggle_conflicts.svg | 109 ++++++++------- demos/operation_log.svg | 228 ++++++++++++++++---------------- demos/resolve_conflicts.svg | 69 +++++----- demos/working_copy.svg | 215 ++++++++++++++---------------- 11 files changed, 365 insertions(+), 375 deletions(-) diff --git a/demos/demo_git_compat.sh b/demos/demo_git_compat.sh index 6b841c88bf..b45e37578b 100755 --- a/demos/demo_git_compat.sh +++ b/demos/demo_git_compat.sh @@ -10,6 +10,7 @@ run_command "cd Hello-World" comment "Inspect it:" run_command "jj log -r 'all()'" +blank run_command "jj diff -r b1" comment "The repo is backed by the actual Git repo:" diff --git a/demos/demo_juggle_conflicts.sh b/demos/demo_juggle_conflicts.sh index 9ce0179b7a..3016726631 100755 --- a/demos/demo_juggle_conflicts.sh +++ b/demos/demo_juggle_conflicts.sh @@ -28,13 +28,11 @@ comment "Let's reorder the second and third commits:" run_command "jj rebase -s third -d first" run_command "jj rebase -s second -d third" run_command "jj log" -comment "The commit labeled \"third\" has a conflict, -as expected. What's more interesting is -that the top commit has no conflict! That's -because it has the changes from all three -commits applied to it." +comment "The commit labeled \"third\" has a conflict, as expected. What's more +interesting is that the top commit has no conflict! That's because it +has the changes from all three commits applied to it. -comment "Let's verify that by looking at its contents:" +Let's verify that by looking at its contents:" run_command "jj co second" run_command "cat file" diff --git a/demos/demo_operation_log.sh b/demos/demo_operation_log.sh index 6eb04388ab..d37e36f2cd 100755 --- a/demos/demo_operation_log.sh +++ b/demos/demo_operation_log.sh @@ -3,8 +3,12 @@ set -euo pipefail . "$(dirname "$0")"/helpers.sh new_tmp_dir -jj git clone https://github.com/octocat/Hello-World > /dev/null -cd Hello-World +{ + jj git clone https://github.com/octocat/Hello-World + cd Hello-World + jj abandon octocat-patch-1 + jj branch forget octocat-patch-1 +} > /dev/null comment "We are in the octocat/Hello-World repo. The \"operation log\" shows the operations diff --git a/demos/demo_resolve_conflicts.sh b/demos/demo_resolve_conflicts.sh index a83dc646e2..76411eb332 100755 --- a/demos/demo_resolve_conflicts.sh +++ b/demos/demo_resolve_conflicts.sh @@ -16,6 +16,10 @@ run_command "jj describe -m \"README: say which world\"" run_command "echo \"Hello Earth!\" > README" run_command "jj diff" +# TODO(ilyagr): Get the real shortest prefix of the b1b commit using `jj log +# --no-graph` and the `.shortest()` template function. +# +# This could also be done in demo_git_compat.sh, but that might not be worth it. comment "We're going to rebase it onto commit b1. That commit looks like this:" run_command "jj diff -r b1" @@ -23,14 +27,13 @@ run_command "jj diff -r b1" comment "Now rebase:" run_command "jj rebase -d b1" -comment "Huh, that seemed to succeed. Let's take a -look at the repo:" +comment "That seemed to succeed but we are also told there is now a conflict. +Let's take a look at the repo:" run_command "jj log -r 'all()'" run_command "jj status" -comment "As you can see, the rebased commit has a -conflict. The file in the working copy looks -like this:" +comment "Indeed, the rebased commit has a conflict. The conflicted file +in the working copy looks like this:" run_command "cat README" comment "Now we will resolve the conflict:" diff --git a/demos/demo_working_copy.sh b/demos/demo_working_copy.sh index e8085c6c78..958c393bf2 100755 --- a/demos/demo_working_copy.sh +++ b/demos/demo_working_copy.sh @@ -3,22 +3,27 @@ set -euo pipefail . "$(dirname "$0")"/helpers.sh new_tmp_dir -jj git clone https://github.com/octocat/Hello-World > /dev/null -cd Hello-World +{ + jj git clone https://github.com/octocat/Hello-World + cd Hello-World + jj abandon test + jj branch forget test + jj abandon octocat-patch-1 + jj branch forget octocat-patch-1 +}> /dev/null comment "We are in the octocat/Hello-World repo. We have an empty working copy on top of master:" -run_command "jj status" run_command "jj log" +run_command "jj status" comment "Now make some changes in the working copy:" run_command "echo \"Goodbye World!\" > README" run_command "echo stuff > new-file" -comment "Our working copy's commit ID changed -because we made changes:" +comment "Because of these changes, our working copy is no longer marked as \"(empty)\". +Also, its commit ID (starting with a blue character) changed:" run_command "jj status" -run_command "jj log" comment "Add a branch so we can easily refer to this commit:" @@ -27,24 +32,27 @@ run_command "jj log" comment "Start working on a new change off of master:" run_command "jj co master" -run_command "jj log" - -comment "Note that the working copy is now clean; the +comment "Note that we were told the working copy is now empty (AKA clean). The \"goodbye\" change stayed in its own commit:" + +run_command "jj log" +comment "Let's do a sanity check: 'jj status' should tell us that +the working copy is clean." run_command "jj status" comment "Modify a file in this new change:" run_command "echo \"Hello everyone!\" > README" +run_command "jj status" comment "The working copy is not special; we can, for example, set the description of any commit. First, set it on the working copy:" -run_command "jj describe -m everyone" +# The output with the description of the working copy messes up the parallel +# a bit, so we redact it. +run_command_output_redacted "jj describe -m everyone" comment "Now set it on the change we worked on before:" run_command "jj describe goodbye -m goodbye" comment "Inspect the result:" run_command "jj log" - -blank diff --git a/demos/git_compat.svg b/demos/git_compat.svg index eced37bf14..63ab06e18a 100644 --- a/demos/git_compat.svg +++ b/demos/git_compat.svg @@ -1,5 +1,5 @@ - + - + # Clone a Git repo: $ jj git clone https://github.com/octocat/Hello-World -Fetching into new repo in "/tmp/tmp.PUd3syX7da/Hello-World" -Working copy now at: pxlotqpw e905ce63 (empty) (no description set) +Fetching into new repo in "/tmp/tmp.4dxBbjaULs/Hello-World" +Working copy now at: rpmzkzyv 801bb6c4 (empty) (no description set) Parent commit      : orrkosyo 7fd1a60b master | (empty) Merge pull request #6 fr om Spaceghost/patch-1 Added 1 files, modified 0 files, removed 0 files @@ -49,7 +49,7 @@ # Inspect it: $ jj log -r 'all()' -@  pxlotqpw jjfan@example.com 2023-10-01 22:29:21.000 -07:00 e905ce63 +@  rpmzkzyv jjfan@example.com 2023-10-01 23:08:41.000 -07:00 801bb6c4 │  (empty) (no description set) │ ◉  tpstlust support+octocat@github.com 2018-05-10 12:55:19.000 -05:00 ├─╯  octocat-patch-1 b1b3f972 @@ -64,24 +64,25 @@ ◉  syktoqts cameron@github.com 2011-01-26 11:06:08.000 -08:00 553c2077 │  first commit ◉  zzzzzzzz root() 00000000 -$ jj diff -r b1 -Modified regular file README: -   1    1: Hello Worldworld! - -# The repo is backed by the actual Git repo: - -$ git --git-dir=.jj/repo/store/git log --graph --all --decorate --oneline -e905ce6  -| * d7ab898  -| * b1b3f97 (origin/octocat-patch-1) sentence case -|/   -| * b3cbd5b (origin/test) Create CONTRIBUTING.md -|/   -*   7fd1a60 (origin/master) Merge pull request #6 from Spaceghost/patch-1 -|\   -| * 7629413 New line at end of file. --Signed off by Spaceghost -|/   -553c207 first commit + +$ jj diff -r b1 +Modified regular file README: +   1    1: Hello Worldworld! + +# The repo is backed by the actual Git repo: + +$ git --git-dir=.jj/repo/store/git log --graph --all --decorate --oneline +801bb6c  +| * 8684af8  +| * b1b3f97 (origin/octocat-patch-1) sentence case +|/   +| * b3cbd5b (origin/test) Create CONTRIBUTING.md +|/   +*   7fd1a60 (origin/master) Merge pull request #6 from Spaceghost/patch-1 +|\   +| * 7629413 New line at end of file. --Signed off by Spaceghost +|/   +553c207 first commit diff --git a/demos/helpers.sh b/demos/helpers.sh index a6d9870e5c..c3dcf24091 100644 --- a/demos/helpers.sh +++ b/demos/helpers.sh @@ -16,6 +16,14 @@ run_command() { COLUMNS=${RUN_COMMAND_COLUMNS-${COLUMNS-80}} eval "$@" } +run_command_output_redacted() { + echo "\$ $@" + # `bash` often resets $COLUMNS, so we also + # allow $RUN_COMMAND_COLUMNS + eval "$@" > /dev/null + echo -e "\033[0;90m... (output redacted) ...\033[0m" +} + run_command_allow_broken_pipe() { run_command "$@" || { EXITCODE="$?" diff --git a/demos/juggle_conflicts.svg b/demos/juggle_conflicts.svg index 1ea98f849a..7ea99e2c32 100644 --- a/demos/juggle_conflicts.svg +++ b/demos/juggle_conflicts.svg @@ -1,5 +1,5 @@ - + - + # We are in a repo with three commits, all # editing the same line: $ jj log -@  upqsurwq jjfan@example.com 2023-10-01 22:29:22.258 -07:00 5d13bfb2 +@  suxomzsn jjfan@example.com 2023-10-01 23:08:42.581 -07:00 b31e41b2 │  (empty) (no description set) -◉  ltqxzzvn jjfan@example.com 2023-10-01 22:29:22.258 -07:00 third d7689062 +◉  vyttsxzx jjfan@example.com 2023-10-01 23:08:42.581 -07:00 third 8eb50272 │  third -◉  nrlsumvr jjfan@example.com 2023-10-01 22:29:22.202 -07:00 second 483c2b23 +◉  wsplxwuu jjfan@example.com 2023-10-01 23:08:42.520 -07:00 second f56e10f8 │  second -◉  pumwmyut jjfan@example.com 2023-10-01 22:29:22.147 -07:00 first eb0ec5cc +◉  kkwyzxpk jjfan@example.com 2023-10-01 23:08:42.451 -07:00 first 287e9298 │  first ◉  zzzzzzzz root() 00000000 $ jj diff -r first @@ -63,68 +63,65 @@ $ jj rebase -s third -d first Rebased 2 commits -Working copy now at: upqsurwq 4d810169 (conflict) (empty) (no description set) -Parent commit      : ltqxzzvn 0aa4eff7 third | (conflict) third +Working copy now at: suxomzsn 47a12d4a (conflict) (empty) (no description set) +Parent commit      : vyttsxzx d692f835 third | (conflict) third Added 0 files, modified 1 files, removed 0 files $ jj rebase -s second -d third Rebased 1 commits $ jj log -◉  nrlsumvr jjfan@example.com 2023-10-01 22:29:22.435 -07:00 second a8e2d400 +◉  wsplxwuu jjfan@example.com 2023-10-01 23:08:42.760 -07:00 second ac9a6db0 │  second -│ @  upqsurwq jjfan@example.com 2023-10-01 22:29:22.406 -07:00 4d810169 conflict +│ @  suxomzsn jjfan@example.com 2023-10-01 23:08:42.730 -07:00 47a12d4a conflict ├─╯  (empty) (no description set) -◉  ltqxzzvn jjfan@example.com 2023-10-01 22:29:22.406 -07:00 third 0aa4eff7 +◉  vyttsxzx jjfan@example.com 2023-10-01 23:08:42.730 -07:00 third d692f835 │  conflict │  third -◉  pumwmyut jjfan@example.com 2023-10-01 22:29:22.147 -07:00 first eb0ec5cc +◉  kkwyzxpk jjfan@example.com 2023-10-01 23:08:42.451 -07:00 first 287e9298 │  first -◉  zzzzzzzz root() 00000000 +◉  zzzzzzzz root() 00000000 -# The commit labeled "third" has a conflict, -# as expected. What's more interesting is -# that the top commit has no conflict! That's -# because it has the changes from all three -# commits applied to it. +# The commit labeled "third" has a conflict, as expected. What's more +# interesting is that the top commit has no conflict! That's because it +# has the changes from all three commits applied to it. + +# Let's verify that by looking at its contents: - -# Let's verify that by looking at its contents: - -$ jj co second -Working copy now at: mqslnlrv e1967a3c (empty) (no description set) -Parent commit      : nrlsumvr a8e2d400 second | second -Added 0 files, modified 1 files, removed 0 files -$ cat file -third +$ jj co second +Working copy now at: nqtmzzzp 8f4e9e6b (empty) (no description set) +Parent commit      : wsplxwuu ac9a6db0 second | second +Added 0 files, modified 1 files, removed 0 files +$ cat file +third + +# Let's now instead make "second" and "third" +# sibling and merge them: -# Let's now instead make "second" and "third" -# sibling and merge them: - -$ jj rebase -s second -d first -Rebased 2 commits -Working copy now at: mqslnlrv 72803a85 (empty) (no description set) -Parent commit      : nrlsumvr 4b5d0b0d second | second -Added 0 files, modified 1 files, removed 0 files -$ jj merge second third -m merged -Working copy now at: xpkuouzp 7390c074 (empty) merged -Parent commit      : nrlsumvr 4b5d0b0d second | second -Parent commit      : ltqxzzvn 0aa4eff7 third | (conflict) third -Added 0 files, modified 1 files, removed 0 files -$ jj log -@    xpkuouzp jjfan@example.com 2023-10-01 22:29:22.561 -07:00 7390c074 -├─╮  (empty) merged -│ ◉  ltqxzzvn jjfan@example.com 2023-10-01 22:29:22.406 -07:00 third 0aa4eff7 -│ │  conflict -│ │  third -◉ │  nrlsumvr jjfan@example.com 2023-10-01 22:29:22.530 -07:00 second 4b5d0b0d -├─╯  second -◉  pumwmyut jjfan@example.com 2023-10-01 22:29:22.147 -07:00 first eb0ec5cc -│  first -◉  zzzzzzzz root() 00000000 - -# Again, because the merge commit has the -# changes from all three commits, it has no -# conflict. - +$ jj rebase -s second -d first +Rebased 2 commits +Working copy now at: nqtmzzzp eebdef23 (empty) (no description set) +Parent commit      : wsplxwuu 06da9f8b second | second +Added 0 files, modified 1 files, removed 0 files +$ jj merge second third -m merged +Working copy now at: xulpxusz 17718bd3 (empty) merged +Parent commit      : wsplxwuu 06da9f8b second | second +Parent commit      : vyttsxzx d692f835 third | (conflict) third +Added 0 files, modified 1 files, removed 0 files +$ jj log +@    xulpxusz jjfan@example.com 2023-10-01 23:08:42.888 -07:00 17718bd3 +├─╮  (empty) merged +│ ◉  vyttsxzx jjfan@example.com 2023-10-01 23:08:42.730 -07:00 third d692f835 +│ │  conflict +│ │  third +◉ │  wsplxwuu jjfan@example.com 2023-10-01 23:08:42.859 -07:00 second 06da9f8b +├─╯  second +◉  kkwyzxpk jjfan@example.com 2023-10-01 23:08:42.451 -07:00 first 287e9298 +│  first +◉  zzzzzzzz root() 00000000 + +# Again, because the merge commit has the +# changes from all three commits, it has no +# conflict. + diff --git a/demos/operation_log.svg b/demos/operation_log.svg index f3ea2aa8c6..cd8f5399d9 100644 --- a/demos/operation_log.svg +++ b/demos/operation_log.svg @@ -1,5 +1,5 @@ - + - + # We are in the octocat/Hello-World repo. @@ -41,134 +41,128 @@ # so far: $ jj op log -@  fa79b3466874 jjfan@jujube now, lasted 1 millisecond -│  check out git remote's default branch -│  args: jj git clone https://github.com/octocat/Hello-World -◉  b9f3854e4c6b jjfan@jujube now, lasted 444 milliseconds -│  fetch from git remote into empty repo -│  args: jj git clone https://github.com/octocat/Hello-World -◉  3eed56af5757 jjfan@jujube now, lasted less than a microsecond -│  add workspace 'default' -◉  6f3495125bc8 jjfan@jujube now, lasted less than a microsecond -   initialize repo - -# We are going to make some changes to show -# how the operation log works. Let's add a file, set -# a description, and rebase onto the "test" branch: - -$ echo stuff > new-file -$ jj describe -m stuff -Working copy now at: xtrplzoo eb5aa286 stuff -Parent commit      : orrkosyo 7fd1a60b master | (empty) Merge pull request #6 fr -om Spaceghost/patch-1 -$ jj rebase -d test -Rebased 1 commits -Working copy now at: xtrplzoo 8c520228 stuff -Parent commit      : kowxouwz b3cbd5bb test | Create CONTRIBUTING.md -Added 1 files, modified 0 files, removed 0 files - -# We are now going to make another change off of -# master: - -$ jj co master -Working copy now at: okqrllkp 7ce6d4fb (empty) (no description set) -Parent commit      : orrkosyo 7fd1a60b master | (empty) Merge pull request #6 fr -om Spaceghost/patch-1 -Added 0 files, modified 0 files, removed 2 files -$ jj describe -m "other stuff" -Working copy now at: okqrllkp 792d0b92 (empty) other stuff -Parent commit      : orrkosyo 7fd1a60b master | (empty) Merge pull request #6 fr -om Spaceghost/patch-1 - -# The repo now looks like this: - -$ jj log -@  okqrllkp jjfan@example.com 2023-10-01 22:29:23.000 -07:00 792d0b92 -│  (empty) other stuff -│ ◉  tpstlust support+octocat@github.com 2018-05-10 12:55:19.000 -05:00 -├─╯  octocat-patch-1 b1b3f972 -│    sentence case -│ ◉  xtrplzoo jjfan@example.com 2023-10-01 22:29:23.000 -07:00 8c520228 -│ │  stuff -│ ◉  kowxouwz octocat@nowhere.com 2014-06-10 15:22:26.000 -07:00 test b3cbd5bb -├─╯  Create CONTRIBUTING.md -◉  orrkosyo octocat@nowhere.com 2012-03-06 15:06:50.000 -08:00 master 7fd1a60b -│  (empty) Merge pull request #6 from Spaceghost/patch-1 -~ - -# The most recent portion of the operation log -# is: +@  2feccd57b761 jjfan@jujube now, lasted less than a microsecond +│  forget branch octocat-patch-1 +│  args: jj branch forget octocat-patch-1 +◉  a05c8478ce31 jjfan@jujube now, lasted 1 millisecond +│  abandon commit b1b3f9723831141a31a1a7252a213e216ea76e56 +│  args: jj abandon octocat-patch-1 +◉  424c7148dfac jjfan@jujube now, lasted 1 millisecond +│  check out git remote's default branch +│  args: jj git clone https://github.com/octocat/Hello-World +◉  97092b0c1819 jjfan@jujube now, lasted 462 milliseconds +│  fetch from git remote into empty repo +│  args: jj git clone https://github.com/octocat/Hello-World +◉  b3587521026b jjfan@jujube now, lasted 1 millisecond +│  add workspace 'default' +◉  f5327ad8002a jjfan@jujube now, lasted less than a microsecond +   initialize repo + +# We are going to make some changes to show +# how the operation log works. Let's add a file, set +# a description, and rebase onto the "test" branch: + +$ echo stuff > new-file +$ jj describe -m stuff +Working copy now at: xmomuksz 26a92ea7 stuff +Parent commit      : orrkosyo 7fd1a60b master | (empty) Merge pull request #6 fr +om Spaceghost/patch-1 +$ jj rebase -d test +Rebased 1 commits +Working copy now at: xmomuksz c268bd6a stuff +Parent commit      : kowxouwz b3cbd5bb test | Create CONTRIBUTING.md +Added 1 files, modified 0 files, removed 0 files + +# We are now going to make another change off of +# master: + +$ jj co master +Working copy now at: ynrrzvmm 1b17a346 (empty) (no description set) +Parent commit      : orrkosyo 7fd1a60b master | (empty) Merge pull request #6 fr +om Spaceghost/patch-1 +Added 0 files, modified 0 files, removed 2 files +$ jj describe -m "other stuff" +Working copy now at: ynrrzvmm 4ea4100a (empty) other stuff +Parent commit      : orrkosyo 7fd1a60b master | (empty) Merge pull request #6 fr +om Spaceghost/patch-1 + +# The repo now looks like this: + +$ jj log +@  ynrrzvmm jjfan@example.com 2023-10-01 23:08:44.000 -07:00 4ea4100a +│  (empty) other stuff +│ ◉  xmomuksz jjfan@example.com 2023-10-01 23:08:44.000 -07:00 c268bd6a +│ │  stuff +│ ◉  kowxouwz octocat@nowhere.com 2014-06-10 15:22:26.000 -07:00 test b3cbd5bb +├─╯  Create CONTRIBUTING.md +◉  orrkosyo octocat@nowhere.com 2012-03-06 15:06:50.000 -08:00 master 7fd1a60b +│  (empty) Merge pull request #6 from Spaceghost/patch-1 +~ -$ jj op log | head -@  5bae9d9b6a8a jjfan@jujube now, lasted 1 millisecond -│  describe commit 7ce6d4fb5acb6945fd0301187a03245b49fe6b71 -│  args: jj describe -m 'other stuff' -◉  99a3111903cc jjfan@jujube now, lasted 1 millisecond -│  check out commit 7fd1a60b01f91b314f59955a4e4d4e80d8edf11d -│  args: jj co master -◉  5cdf49cce8a4 jjfan@jujube now, lasted 1 millisecond -│  rebase commit eb5aa28675c23f6664c1027aae91f13bf5e3c474 and descendants -│  args: jj rebase -d test -◉  74cd4da2188d jjfan@jujube now, lasted 1 millisecond - -# Let's undo that rebase operation: - -$ jj undo 5cdf4 - -# Note that only the rebase was undone, and the -# subsequent "other stuff" change was not undone: +# The most recent portion of the operation log +# is: + +$ jj op log | head +@  28fc87b3df8d jjfan@jujube now, lasted less than a microsecond +│  describe commit 1b17a346994eddb25c76624a6ef6c13445e0be23 +│  args: jj describe -m 'other stuff' +◉  be7208103f42 jjfan@jujube now, lasted 1 millisecond +│  check out commit 7fd1a60b01f91b314f59955a4e4d4e80d8edf11d +│  args: jj co master +◉  0e015b9f5220 jjfan@jujube now, lasted 2 milliseconds +│  rebase commit 26a92ea700e79c5f4bc2318819e84bbb5b78955a and descendants +│  args: jj rebase -d test +◉  2fc5dc3438fa jjfan@jujube now, lasted 1 millisecond + +# Let's undo that rebase operation: + +$ jj undo 0e015 -$ jj log -@  okqrllkp jjfan@example.com 2023-10-01 22:29:23.000 -07:00 792d0b92 -│  (empty) other stuff -│ ◉  xtrplzoo jjfan@example.com 2023-10-01 22:29:23.000 -07:00 eb5aa286 -├─╯  stuff -│ ◉  tpstlust support+octocat@github.com 2018-05-10 12:55:19.000 -05:00 -├─╯  octocat-patch-1 b1b3f972 -│    sentence case -│ ◉  kowxouwz octocat@nowhere.com 2014-06-10 15:22:26.000 -07:00 test b3cbd5bb +# Note that only the rebase was undone, and the +# subsequent "other stuff" change was not undone: + +$ jj log +@  ynrrzvmm jjfan@example.com 2023-10-01 23:08:44.000 -07:00 4ea4100a +│  (empty) other stuff +│ ◉  xmomuksz jjfan@example.com 2023-10-01 23:08:44.000 -07:00 26a92ea7 +├─╯  stuff +│ ◉  kowxouwz octocat@nowhere.com 2014-06-10 15:22:26.000 -07:00 test b3cbd5bb ├─╯  Create CONTRIBUTING.md -◉  orrkosyo octocat@nowhere.com 2012-03-06 15:06:50.000 -08:00 master 7fd1a60b +◉  orrkosyo octocat@nowhere.com 2012-03-06 15:06:50.000 -08:00 master 7fd1a60b │  (empty) Merge pull request #6 from Spaceghost/patch-1 ~ # We can also see what the repo looked like # after the rebase operation: -$ jj --at-op 5cdf4 log -@  xtrplzoo jjfan@example.com 2023-10-01 22:29:23.000 -07:00 8c520228 +$ jj --at-op 0e015 log +@  xmomuksz jjfan@example.com 2023-10-01 23:08:44.000 -07:00 c268bd6a │  stuff -◉  kowxouwz octocat@nowhere.com 2014-06-10 15:22:26.000 -07:00 test b3cbd5bb +◉  kowxouwz octocat@nowhere.com 2014-06-10 15:22:26.000 -07:00 test b3cbd5bb │  Create CONTRIBUTING.md -│ ◉  tpstlust support+octocat@github.com 2018-05-10 12:55:19.000 -05:00 -├─╯  octocat-patch-1 b1b3f972 -│    sentence case -◉  orrkosyo octocat@nowhere.com 2012-03-06 15:06:50.000 -08:00 master 7fd1a60b -│  (empty) Merge pull request #6 from Spaceghost/patch-1 -~ +◉  orrkosyo octocat@nowhere.com 2012-03-06 15:06:50.000 -08:00 master 7fd1a60b +│  (empty) Merge pull request #6 from Spaceghost/patch-1 +~ + +# Let's say we instead want to go back to the +# state of the repo right after the rebase: -# Let's say we instead want to go back to the -# state of the repo right after the rebase: - -$ jj op restore 5cdf4 -Working copy now at: xtrplzoo 8c520228 stuff -Parent commit      : kowxouwz b3cbd5bb test | Create CONTRIBUTING.md -Added 2 files, modified 0 files, removed 0 files +$ jj op restore 0e015 +Working copy now at: xmomuksz c268bd6a stuff +Parent commit      : kowxouwz b3cbd5bb test | Create CONTRIBUTING.md +Added 2 files, modified 0 files, removed 0 files + +# We're now back to before the "other stuff" +# change existed: -# We're now back to before the "other stuff" -# change existed: - -$ jj log -@  xtrplzoo jjfan@example.com 2023-10-01 22:29:23.000 -07:00 8c520228 -│  stuff -◉  kowxouwz octocat@nowhere.com 2014-06-10 15:22:26.000 -07:00 test b3cbd5bb -│  Create CONTRIBUTING.md -│ ◉  tpstlust support+octocat@github.com 2018-05-10 12:55:19.000 -05:00 -├─╯  octocat-patch-1 b1b3f972 -│    sentence case -◉  orrkosyo octocat@nowhere.com 2012-03-06 15:06:50.000 -08:00 master 7fd1a60b -│  (empty) Merge pull request #6 from Spaceghost/patch-1 -~ +$ jj log +@  xmomuksz jjfan@example.com 2023-10-01 23:08:44.000 -07:00 c268bd6a +│  stuff +◉  kowxouwz octocat@nowhere.com 2014-06-10 15:22:26.000 -07:00 test b3cbd5bb +│  Create CONTRIBUTING.md +◉  orrkosyo octocat@nowhere.com 2012-03-06 15:06:50.000 -08:00 master 7fd1a60b +│  (empty) Merge pull request #6 from Spaceghost/patch-1 +~ diff --git a/demos/resolve_conflicts.svg b/demos/resolve_conflicts.svg index 50d3b466fb..aa456dacc7 100644 --- a/demos/resolve_conflicts.svg +++ b/demos/resolve_conflicts.svg @@ -1,5 +1,5 @@ - + - + # We are on the master branch of the # octocat/Hello-World repo: $ jj log -r 'all()' -@  xkmnkqsr jjfan@example.com 2023-10-01 22:29:25.000 -07:00 b6aec352 +@  lxrtqmzk jjfan@example.com 2023-10-01 23:08:45.000 -07:00 7305afb9 │  (empty) (no description set) │ ◉  tpstlust support+octocat@github.com 2018-05-10 12:55:19.000 -05:00 ├─╯  octocat-patch-1 b1b3f972 │    sentence case │ ◉  kowxouwz octocat@nowhere.com 2014-06-10 15:22:26.000 -07:00 test b3cbd5bb ├─╯  Create CONTRIBUTING.md -◉    orrkosyo octocat@nowhere.com 2012-03-06 15:06:50.000 -08:00 master 7fd1a60b +◉    orrkosyo octocat@nowhere.com 2012-03-06 15:06:50.000 -08:00 master 7fd1a60b ├─╮  (empty) Merge pull request #6 from Spaceghost/patch-1 │ ◉  nznozkvv Johnneylee.rollins@gmail.com 2011-09-13 21:42:41.000 -07:00 ├─╯  76294131 @@ -60,7 +60,7 @@ # when we rebase it: $ jj describe -m "README: say which world" -Working copy now at: xkmnkqsr 20110a7f (empty) README: say which world +Working copy now at: lxrtqmzk 3afa2f52 (empty) README: say which world Parent commit      : orrkosyo 7fd1a60b master | (empty) Merge pull request #6 fr om Spaceghost/patch-1 $ echo "Hello Earth!" > README @@ -79,15 +79,15 @@ $ jj rebase -d b1 Rebased 1 commits -Working copy now at: xkmnkqsr 539b71db (conflict) README: say which world +Working copy now at: lxrtqmzk ae190be3 (conflict) README: say which world Parent commit      : tpstlust b1b3f972 octocat-patch-1 | sentence case Added 0 files, modified 1 files, removed 0 files -# Huh, that seemed to succeed. Let's take a -# look at the repo: +# That seemed to succeed but we are also told there is now a conflict. +# Let's take a look at the repo: $ jj log -r 'all()' -@  xkmnkqsr jjfan@example.com 2023-10-01 22:29:25.000 -07:00 539b71db conflict +@  lxrtqmzk jjfan@example.com 2023-10-01 23:08:46.000 -07:00 ae190be3 conflict │  README: say which world ◉  tpstlust support+octocat@github.com 2018-05-10 12:55:19.000 -05:00 │  octocat-patch-1 b1b3f972 @@ -99,7 +99,7 @@ │ ◉  nznozkvv Johnneylee.rollins@gmail.com 2011-09-13 21:42:41.000 -07:00 ├─╯  76294131 │    New line at end of file. --Signed off by Spaceghost -◉  syktoqts cameron@github.com 2011-01-26 11:06:08.000 -08:00 553c2077 +◉  syktoqts cameron@github.com 2011-01-26 11:06:08.000 -08:00 553c2077 │  first commit ◉  zzzzzzzz root() 00000000 $ jj status @@ -107,33 +107,32 @@ M README There are unresolved conflicts at these paths: README    2-sided conflict -Working copy : xkmnkqsr 539b71db (conflict) README: say which world +Working copy : lxrtqmzk ae190be3 (conflict) README: say which world Parent commit: tpstlust b1b3f972 octocat-patch-1 | sentence case -# As you can see, the rebased commit has a -# conflict. The file in the working copy looks -# like this: - -$ cat README -<<<<<<< -%%%%%%% --Hello World! -+Hello world! -+++++++ -Hello Earth! ->>>>>>> - -# Now we will resolve the conflict: - -$ echo "Hello earth!" > README - -# The status command no longer reports it: - -$ jj status -Working copy changes: -M README -Working copy : xkmnkqsr b1c13c23 README: say which world -Parent commit: tpstlust b1b3f972 octocat-patch-1 | sentence case +# Indeed, the rebased commit has a conflict. The conflicted file +# in the working copy looks like this: + +$ cat README +<<<<<<< +%%%%%%% +-Hello World! ++Hello world! ++++++++ +Hello Earth! +>>>>>>> + +# Now we will resolve the conflict: + +$ echo "Hello earth!" > README + +# The status command no longer reports it: + +$ jj status +Working copy changes: +M README +Working copy : lxrtqmzk dd482356 README: say which world +Parent commit: tpstlust b1b3f972 octocat-patch-1 | sentence case diff --git a/demos/working_copy.svg b/demos/working_copy.svg index 9b0d36b3e1..62b4800ac3 100644 --- a/demos/working_copy.svg +++ b/demos/working_copy.svg @@ -1,5 +1,5 @@ - + - + # We are in the octocat/Hello-World repo. # We have an empty working copy on top of master: -$ jj status -The working copy is clean -Working copy : mxqlopuw 8d0e7e7c (empty) (no description set) -Parent commit: orrkosyo 7fd1a60b master | (empty) Merge pull request #6 from Spa -ceghost/patch-1 -$ jj log -@  mxqlopuw jjfan@example.com 2023-10-01 22:29:26.000 -07:00 8d0e7e7c -│  (empty) (no description set) -│ ◉  tpstlust support+octocat@github.com 2018-05-10 12:55:19.000 -05:00 -├─╯  octocat-patch-1 b1b3f972 -│    sentence case -│ ◉  kowxouwz octocat@nowhere.com 2014-06-10 15:22:26.000 -07:00 test b3cbd5bb -├─╯  Create CONTRIBUTING.md -◉  orrkosyo octocat@nowhere.com 2012-03-06 15:06:50.000 -08:00 master 7fd1a60b -│  (empty) Merge pull request #6 from Spaceghost/patch-1 -~ +$ jj log +@  svwskyvs jjfan@example.com 2023-10-01 23:08:47.000 -07:00 a17e9389 +│  (empty) (no description set) +◉  orrkosyo octocat@nowhere.com 2012-03-06 15:06:50.000 -08:00 master 7fd1a60b +│  (empty) Merge pull request #6 from Spaceghost/patch-1 +~ +$ jj status +The working copy is clean +Working copy : svwskyvs a17e9389 (empty) (no description set) +Parent commit: orrkosyo 7fd1a60b master | (empty) Merge pull request #6 from Spa +ceghost/patch-1 + +# Now make some changes in the working copy: + +$ echo "Goodbye World!" > README +$ echo stuff > new-file -# Now make some changes in the working copy: - -$ echo "Goodbye World!" > README -$ echo stuff > new-file - -# Our working copy's commit ID changed -# because we made changes: - -$ jj status -Working copy changes: -M README -A new-file -Working copy : mxqlopuw b580fc4d (no description set) -Parent commit: orrkosyo 7fd1a60b master | (empty) Merge pull request #6 from Spa -ceghost/patch-1 +# Because of these changes, our working copy is no longer marked as "(empty)". +# Also, its commit ID (starting with a blue character) changed: + +$ jj status +Working copy changes: +M README +A new-file +Working copy : svwskyvs ae3ca8fd (no description set) +Parent commit: orrkosyo 7fd1a60b master | (empty) Merge pull request #6 from Spa +ceghost/patch-1 + +# Add a branch so we can easily refer to this +# commit: + +$ jj branch create goodbye $ jj log -@  mxqlopuw jjfan@example.com 2023-10-01 22:29:27.000 -07:00 b580fc4d +@  svwskyvs jjfan@example.com 2023-10-01 23:08:47.000 -07:00 goodbye ae3ca8fd │  (no description set) -│ ◉  tpstlust support+octocat@github.com 2018-05-10 12:55:19.000 -05:00 -├─╯  octocat-patch-1 b1b3f972 -│    sentence case -│ ◉  kowxouwz octocat@nowhere.com 2014-06-10 15:22:26.000 -07:00 test b3cbd5bb -├─╯  Create CONTRIBUTING.md -◉  orrkosyo octocat@nowhere.com 2012-03-06 15:06:50.000 -08:00 master 7fd1a60b -│  (empty) Merge pull request #6 from Spaceghost/patch-1 -~ - -# Add a branch so we can easily refer to this -# commit: +◉  orrkosyo octocat@nowhere.com 2012-03-06 15:06:50.000 -08:00 master 7fd1a60b +│  (empty) Merge pull request #6 from Spaceghost/patch-1 +~ + +# Start working on a new change off of master: + +$ jj co master +Working copy now at: vopomyrz 423ef5a5 (empty) (no description set) +Parent commit      : orrkosyo 7fd1a60b master | (empty) Merge pull request #6 fr +om Spaceghost/patch-1 +Added 0 files, modified 1 files, removed 1 files -$ jj branch create goodbye -$ jj log -@  mxqlopuw jjfan@example.com 2023-10-01 22:29:27.000 -07:00 goodbye b580fc4d -│  (no description set) -│ ◉  tpstlust support+octocat@github.com 2018-05-10 12:55:19.000 -05:00 -├─╯  octocat-patch-1 b1b3f972 -│    sentence case -│ ◉  kowxouwz octocat@nowhere.com 2014-06-10 15:22:26.000 -07:00 test b3cbd5bb -├─╯  Create CONTRIBUTING.md -◉  orrkosyo octocat@nowhere.com 2012-03-06 15:06:50.000 -08:00 master 7fd1a60b -│  (empty) Merge pull request #6 from Spaceghost/patch-1 -~ - -# Start working on a new change off of master: +# Note that we were told the working copy is now empty (AKA clean). The +# "goodbye" change stayed in its own commit: + +$ jj log +@  vopomyrz jjfan@example.com 2023-10-01 23:08:46.000 -07:00 423ef5a5 +│  (empty) (no description set) +│ ◉  svwskyvs jjfan@example.com 2023-10-01 23:08:47.000 -07:00 goodbye ae3ca8fd +├─╯  (no description set) +◉  orrkosyo octocat@nowhere.com 2012-03-06 15:06:50.000 -08:00 master 7fd1a60b +│  (empty) Merge pull request #6 from Spaceghost/patch-1 +~ + +# Let's do a sanity check: 'jj status' should tell us that +# the working copy is clean. -$ jj co master -Working copy now at: quqqqrtm cb2e4d75 (empty) (no description set) -Parent commit      : orrkosyo 7fd1a60b master | (empty) Merge pull request #6 fr -om Spaceghost/patch-1 -Added 0 files, modified 1 files, removed 1 files -$ jj log -@  quqqqrtm jjfan@example.com 2023-10-01 22:29:27.000 -07:00 cb2e4d75 -│  (empty) (no description set) -│ ◉  mxqlopuw jjfan@example.com 2023-10-01 22:29:27.000 -07:00 goodbye b580fc4d -├─╯  (no description set) -│ ◉  tpstlust support+octocat@github.com 2018-05-10 12:55:19.000 -05:00 -├─╯  octocat-patch-1 b1b3f972 -│    sentence case -│ ◉  kowxouwz octocat@nowhere.com 2014-06-10 15:22:26.000 -07:00 test b3cbd5bb -├─╯  Create CONTRIBUTING.md -◉  orrkosyo octocat@nowhere.com 2012-03-06 15:06:50.000 -08:00 master 7fd1a60b -│  (empty) Merge pull request #6 from Spaceghost/patch-1 -~ - -# Note that the working copy is now clean; the -# "goodbye" change stayed in its own commit: - -$ jj status -The working copy is clean -Working copy : quqqqrtm cb2e4d75 (empty) (no description set) -Parent commit: orrkosyo 7fd1a60b master | (empty) Merge pull request #6 from Spa -ceghost/patch-1 - -# Modify a file in this new change: - -$ echo "Hello everyone!" > README - -# The working copy is not special; we can, for -# example, set the description of any commit. -# First, set it on the working copy: - -$ jj describe -m everyone -Working copy now at: quqqqrtm 50e8e102 everyone -Parent commit      : orrkosyo 7fd1a60b master | (empty) Merge pull request #6 fr -om Spaceghost/patch-1 - -# Now set it on the change we worked on before: - -$ jj describe goodbye -m goodbye - -# Inspect the result: - -$ jj log -◉  mxqlopuw jjfan@example.com 2023-10-01 22:29:27.000 -07:00 goodbye b19dd123 -│  goodbye -│ @  quqqqrtm jjfan@example.com 2023-10-01 22:29:27.000 -07:00 50e8e102 -├─╯  everyone -│ ◉  tpstlust support+octocat@github.com 2018-05-10 12:55:19.000 -05:00 -├─╯  octocat-patch-1 b1b3f972 -│    sentence case -│ ◉  kowxouwz octocat@nowhere.com 2014-06-10 15:22:26.000 -07:00 test b3cbd5bb -├─╯  Create CONTRIBUTING.md -◉  orrkosyo octocat@nowhere.com 2012-03-06 15:06:50.000 -08:00 master 7fd1a60b -│  (empty) Merge pull request #6 from Spaceghost/patch-1 -~ +$ jj status +The working copy is clean +Working copy : vopomyrz 423ef5a5 (empty) (no description set) +Parent commit: orrkosyo 7fd1a60b master | (empty) Merge pull request #6 from Spa +ceghost/patch-1 + +# Modify a file in this new change: + +$ echo "Hello everyone!" > README +$ jj status +Working copy changes: +M README +Working copy : vopomyrz a9ee189a (no description set) +Parent commit: orrkosyo 7fd1a60b master | (empty) Merge pull request #6 from Spa +ceghost/patch-1 + +# The working copy is not special; we can, for +# example, set the description of any commit. +# First, set it on the working copy: + +$ jj describe -m everyone +... (output redacted) ... + +# Now set it on the change we worked on before: + +$ jj describe goodbye -m goodbye + +# Inspect the result: + +$ jj log +◉  svwskyvs jjfan@example.com 2023-10-01 23:08:47.000 -07:00 goodbye 0b538e91 +│  goodbye +│ @  vopomyrz jjfan@example.com 2023-10-01 23:08:47.000 -07:00 e0fdbf96 +├─╯  everyone +◉  orrkosyo octocat@nowhere.com 2012-03-06 15:06:50.000 -08:00 master 7fd1a60b +│  (empty) Merge pull request #6 from Spaceghost/patch-1 +~