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 b7f423a9cb..9643751632 100755 --- a/demos/demo_juggle_conflicts.sh +++ b/demos/demo_juggle_conflicts.sh @@ -26,13 +26,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_resolve_conflicts.sh b/demos/demo_resolve_conflicts.sh index a83dc646e2..d4f8a3cf50 100755 --- a/demos/demo_resolve_conflicts.sh +++ b/demos/demo_resolve_conflicts.sh @@ -16,21 +16,20 @@ run_command "jj describe -m \"README: say which world\"" run_command "echo \"Hello Earth!\" > README" run_command "jj diff" -comment "We're going to rebase it onto commit b1. +comment "We're going to rebase it onto commit b1b. That commit looks like this:" -run_command "jj diff -r b1" +run_command "jj diff -r b1b" comment "Now rebase:" -run_command "jj rebase -d b1" +run_command "jj rebase -d b1b" -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..9c244a7fb9 100755 --- a/demos/demo_working_copy.sh +++ b/demos/demo_working_copy.sh @@ -8,17 +8,16 @@ cd Hello-World 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 +26,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 0f70a6165f..1ac4dca1fe 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.Aw0uRnB77B/Hello-World" -Working copy now at: rrzlppzr 16444b36 (empty) (no description set) +Fetching into new repo in "/tmp/tmp.bNUls3yW6v/Hello-World" +Working copy now at: mskvvmwl 13eedf1c (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()' -@  rrzlppzr jjfan@example.com 2023-09-10 13:00:14.000 -07:00 16444b36 +@  mskvvmwl jjfan@example.com 2023-09-10 13:01:06.000 -07:00 13eedf1c │  (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 -16444b3  -| * 61c0468  -| * 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 +31279aa  +13eedf1  +| * 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 cdc2ceeb5e..99a9f09730 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 '... (output redacted) ...' +} + run_command_allow_broken_pipe() { run_command "$@" || { EXITCODE="$?" diff --git a/demos/juggle_conflicts.svg b/demos/juggle_conflicts.svg index 4a0dec64e1..c67543d1f9 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 -@  xsktmxmx jjfan@example.com 2023-09-10 13:00:14.943 -07:00 c184ef5a +@  vqlsqnkx jjfan@example.com 2023-09-10 13:01:07.647 -07:00 48cfde96 │  (empty) (no description set) -◉  prulursz jjfan@example.com 2023-09-10 13:00:14.943 -07:00 third c62de898 +◉  wtuqzxll jjfan@example.com 2023-09-10 13:01:07.647 -07:00 third ea7ce69d │  third -◉  lzwotpzu jjfan@example.com 2023-09-10 13:00:14.895 -07:00 second 1a580bbf +◉  wzntvysv jjfan@example.com 2023-09-10 13:01:07.601 -07:00 second d517a280 │  second -◉  xtxsoqon jjfan@example.com 2023-09-10 13:00:14.848 -07:00 first d335fb11 +◉  umkprpts jjfan@example.com 2023-09-10 13:01:07.555 -07:00 first 5ba919b0 │  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: xsktmxmx db53ab69 (conflict) (empty) (no description set) -Parent commit      : prulursz 67da562d third | (conflict) third +Working copy now at: vqlsqnkx d8ebd734 (conflict) (empty) (no description set) +Parent commit      : wtuqzxll 78f7e430 third | (conflict) third Added 0 files, modified 1 files, removed 0 files $ jj rebase -s second -d third Rebased 1 commits $ jj log -◉  lzwotpzu jjfan@example.com 2023-09-10 13:00:15.076 -07:00 second f3c97f3a +◉  wzntvysv jjfan@example.com 2023-09-10 13:01:07.782 -07:00 second 1da36f8b │  second -│ @  xsktmxmx jjfan@example.com 2023-09-10 13:00:15.054 -07:00 db53ab69 conflict +│ @  vqlsqnkx jjfan@example.com 2023-09-10 13:01:07.759 -07:00 d8ebd734 conflict ├─╯  (empty) (no description set) -◉  prulursz jjfan@example.com 2023-09-10 13:00:15.054 -07:00 third 67da562d +◉  wtuqzxll jjfan@example.com 2023-09-10 13:01:07.759 -07:00 third 78f7e430 │  conflict │  third -◉  xtxsoqon jjfan@example.com 2023-09-10 13:00:14.848 -07:00 first d335fb11 +◉  umkprpts jjfan@example.com 2023-09-10 13:01:07.555 -07:00 first 5ba919b0 │  first ◉  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: sqxwpqxl 2afc11e0 (empty) (no description set) -Parent commit      : lzwotpzu f3c97f3a second | second -Added 0 files, modified 1 files, removed 0 files -$ cat file -third +$ jj co second +Working copy now at: kxzwuxlm 972c552f (empty) (no description set) +Parent commit      : wzntvysv 1da36f8b 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: sqxwpqxl 29fc6018 (empty) (no description set) -Parent commit      : lzwotpzu 58a16329 second | second -Added 0 files, modified 1 files, removed 0 files -$ jj merge second third -m merged -Working copy now at: mrspwsto 517d601a (empty) merged -Parent commit      : lzwotpzu 58a16329 second | second -Parent commit      : prulursz 67da562d third | (conflict) third -Added 0 files, modified 1 files, removed 0 files -$ jj log -@    mrspwsto jjfan@example.com 2023-09-10 13:00:15.187 -07:00 517d601a -├─╮  (empty) merged -│ ◉  prulursz jjfan@example.com 2023-09-10 13:00:15.054 -07:00 third 67da562d -│ │  conflict -│ │  third -◉ │  lzwotpzu jjfan@example.com 2023-09-10 13:00:15.156 -07:00 second 58a16329 -├─╯  second -◉  xtxsoqon jjfan@example.com 2023-09-10 13:00:14.848 -07:00 first d335fb11 -│  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: kxzwuxlm 2a05f8c1 (empty) (no description set) +Parent commit      : wzntvysv 636ec95a second | second +Added 0 files, modified 1 files, removed 0 files +$ jj merge second third -m merged +Working copy now at: ssqunoss 9dccef59 (empty) merged +Parent commit      : wzntvysv 636ec95a second | second +Parent commit      : wtuqzxll 78f7e430 third | (conflict) third +Added 0 files, modified 1 files, removed 0 files +$ jj log +@    ssqunoss jjfan@example.com 2023-09-10 13:01:07.876 -07:00 9dccef59 +├─╮  (empty) merged +│ ◉  wtuqzxll jjfan@example.com 2023-09-10 13:01:07.759 -07:00 third 78f7e430 +│ │  conflict +│ │  third +◉ │  wzntvysv jjfan@example.com 2023-09-10 13:01:07.850 -07:00 second 636ec95a +├─╯  second +◉  umkprpts jjfan@example.com 2023-09-10 13:01:07.555 -07:00 first 5ba919b0 +│  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 5e9a3e6ace..909e51e3a2 100644 --- a/demos/operation_log.svg +++ b/demos/operation_log.svg @@ -41,15 +41,15 @@ # so far: $ jj op log -@  5be578407bd6 jjfan@jujube now, lasted 1 millisecond +@  8b17e4158de2 jjfan@jujube now, lasted 1 millisecond │  check out git remote's default branch │  args: jj git clone https://github.com/octocat/Hello-World -◉  89c1090ecc23 jjfan@jujube now, lasted 436 milliseconds +◉  6ff55ead940a jjfan@jujube now, lasted 525 milliseconds │  fetch from git remote into empty repo │  args: jj git clone https://github.com/octocat/Hello-World -◉  73b14ba3d38b jjfan@jujube now, lasted 1 millisecond +◉  f8bbb97a940e jjfan@jujube now, lasted 1 millisecond │  add workspace 'default' -◉  3064d12efb5a jjfan@jujube now, lasted less than a microsecond +◉  0df2ab8b5ffb jjfan@jujube now, lasted less than a microsecond    initialize repo # We are going to make some changes to show @@ -58,12 +58,12 @@ $ echo stuff > new-file $ jj describe -m stuff -Working copy now at: srtvtnso b03aef80 stuff +Working copy now at: mwzwsunv d9865c44 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: srtvtnso e3d986aa stuff +Working copy now at: mwzwsunv 5f00639d stuff Parent commit      : kowxouwz b3cbd5bb test | Create CONTRIBUTING.md Added 1 files, modified 0 files, removed 0 files @@ -71,21 +71,21 @@ # master: $ jj co master -Working copy now at: ssplxqnr 7980532e (empty) (no description set) -Parent commit      : orrkosyo 7fd1a60b master | (empty) Merge pull request #6 fr +Working copy now at: mrwtnqsv 9305e409 (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: ssplxqnr ea5a7d3e (empty) other stuff +Working copy now at: mrwtnqsv 20c42216 (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 -@  ssplxqnr jjfan@example.com 2023-09-10 13:00:16.000 -07:00 ea5a7d3e +@  mrwtnqsv jjfan@example.com 2023-09-10 13:01:09.000 -07:00 20c42216 │  (empty) other stuff -│ ◉  srtvtnso jjfan@example.com 2023-09-10 13:00:16.000 -07:00 e3d986aa +│ ◉  mwzwsunv jjfan@example.com 2023-09-10 13:01:09.000 -07:00 5f00639d │ │  stuff │ ◉  kowxouwz octocat@nowhere.com 2014-06-10 15:22:26.000 -07:00 test b3cbd5bb ├─╯  Create CONTRIBUTING.md @@ -97,45 +97,45 @@ # is: $ jj op log | head -@  3a06ed216b31 jjfan@jujube now, lasted less than a microsecond -│  describe commit 7980532e03243317493b424c8d89d5006abae00a +@  a928053f8d28 jjfan@jujube now, lasted 1 millisecond +│  describe commit 9305e4091384db18f67b8d6850c0e4d553b7cf45 │  args: jj describe -m 'other stuff' -◉  0f09c2471e42 jjfan@jujube now, lasted 1 millisecond +◉  70161e3483e8 jjfan@jujube now, lasted 2 milliseconds │  check out commit 7fd1a60b01f91b314f59955a4e4d4e80d8edf11d │  args: jj co master -◉  302803055552 jjfan@jujube now, lasted 1 millisecond -│  rebase commit b03aef80a514079de6ca4333b7a990a4d84c84fb and descendants +◉  54242c73c1d1 jjfan@jujube now, lasted 1 millisecond +│  rebase commit d9865c4489b2a022830fb0485ca4f19027390871 and descendants │  args: jj rebase -d test -◉  fd1664fd5723 jjfan@jujube now, lasted less than a microsecond +◉  5db4ceb44790 jjfan@jujube now, lasted 1 millisecond # Let's undo that rebase operation: -$ jj undo 3a06ed21 -Working copy now at: ssplxqnr 7980532e (empty) (no description set) -Parent commit      : orrkosyo 7fd1a60b master | (empty) Merge pull request #6 fr +$ jj undo a928053f +Working copy now at: mrwtnqsv 9305e409 (empty) (no description set) +Parent commit      : orrkosyo 7fd1a60b master | (empty) Merge pull request #6 fr om Spaceghost/patch-1 # Note that only the rebase was undone, and the # subsequent "other stuff" change was not undone: $ jj log -@  ssplxqnr jjfan@example.com 2023-09-10 13:00:15.000 -07:00 7980532e +@  mrwtnqsv jjfan@example.com 2023-09-10 13:01:08.000 -07:00 9305e409 │  (empty) (no description set) -│ ◉  srtvtnso jjfan@example.com 2023-09-10 13:00:16.000 -07:00 e3d986aa +│ ◉  mwzwsunv jjfan@example.com 2023-09-10 13:01:09.000 -07:00 5f00639d │ │  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 3a06ed21 log -@  ssplxqnr jjfan@example.com 2023-09-10 13:00:16.000 -07:00 ea5a7d3e +$ jj --at-op a928053f log +@  mrwtnqsv jjfan@example.com 2023-09-10 13:01:09.000 -07:00 20c42216 │  (empty) other stuff -│ ◉  srtvtnso jjfan@example.com 2023-09-10 13:00:16.000 -07:00 e3d986aa +│ ◉  mwzwsunv jjfan@example.com 2023-09-10 13:01:09.000 -07:00 5f00639d │ │  stuff │ ◉  kowxouwz octocat@nowhere.com 2014-06-10 15:22:26.000 -07:00 test b3cbd5bb ├─╯  Create CONTRIBUTING.md @@ -146,8 +146,8 @@ # Let's say we instead want to go back to the # state of the repo right after the rebase: -$ jj op restore 3a06ed21 -Working copy now at: ssplxqnr ea5a7d3e (empty) other stuff +$ jj op restore a928053f +Working copy now at: mrwtnqsv 20c42216 (empty) other stuff Parent commit      : orrkosyo 7fd1a60b master | (empty) Merge pull request #6 fr om Spaceghost/patch-1 @@ -155,9 +155,9 @@ # change existed: $ jj log -@  ssplxqnr jjfan@example.com 2023-09-10 13:00:16.000 -07:00 ea5a7d3e +@  mrwtnqsv jjfan@example.com 2023-09-10 13:01:09.000 -07:00 20c42216 │  (empty) other stuff -│ ◉  srtvtnso jjfan@example.com 2023-09-10 13:00:16.000 -07:00 e3d986aa +│ ◉  mwzwsunv jjfan@example.com 2023-09-10 13:01:09.000 -07:00 5f00639d │ │  stuff │ ◉  kowxouwz octocat@nowhere.com 2014-06-10 15:22:26.000 -07:00 test b3cbd5bb ├─╯  Create CONTRIBUTING.md diff --git a/demos/resolve_conflicts.svg b/demos/resolve_conflicts.svg index 2d48387cd0..667f090c72 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()' -@  qmurktwv jjfan@example.com 2023-09-10 13:00:18.000 -07:00 2f43d76a +@  ryurqrnm jjfan@example.com 2023-09-10 13:01:10.000 -07:00 1a58f03d │  (empty) (no description set) │ ◉  tpstlust support+octocat@github.com 2018-05-10 12:55:19.000 -05:00 ├─╯  octocat-patch-1 b1b3f972 @@ -60,7 +60,7 @@ # when we rebase it: $ jj describe -m "README: say which world" -Working copy now at: qmurktwv bd0039b1 (empty) README: say which world +Working copy now at: ryurqrnm 55e3c24f (empty) README: say which world Parent commit      : orrkosyo 7fd1a60b master | (empty) Merge pull request #6 fr om Spaceghost/patch-1 $ echo "Hello Earth!" > README @@ -68,26 +68,26 @@ Modified regular file README:    1    1: Hello WorldEarth! -# We're going to rebase it onto commit b1. +# We're going to rebase it onto commit b1b. # That commit looks like this: -$ jj diff -r b1 +$ jj diff -r b1b Modified regular file README:    1    1: Hello Worldworld! # Now rebase: -$ jj rebase -d b1 +$ jj rebase -d b1b Rebased 1 commits -Working copy now at: qmurktwv fe774def (conflict) README: say which world +Working copy now at: ryurqrnm 0121c420 (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()' -@  qmurktwv jjfan@example.com 2023-09-10 13:00:18.000 -07:00 fe774def conflict +@  ryurqrnm jjfan@example.com 2023-09-10 13:01:10.000 -07:00 0121c420 conflict │  README: say which world ◉  tpstlust support+octocat@github.com 2018-05-10 12:55:19.000 -05:00 │  octocat-patch-1 b1b3f972 @@ -99,41 +99,40 @@ │ ◉  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 +◉  zzzzzzzz root() 00000000 $ jj status Working copy changes: M README There are unresolved conflicts at these paths: README    2-sided conflict -Working copy : qmurktwv fe774def (conflict) README: say which world +Working copy : ryurqrnm 0121c420 (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 : qmurktwv 057a9ae7 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 : ryurqrnm e039172a 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 38cd4a2695..4cb907f314 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 : zqplnxkt 4d28514f (empty) (no description set) -Parent commit: orrkosyo 7fd1a60b master | (empty) Merge pull request #6 from Spa -ceghost/patch-1 -$ jj log -@  zqplnxkt jjfan@example.com 2023-09-10 13:00:19.000 -07:00 4d28514f -│  (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 log +@  kpnsulok jjfan@example.com 2023-09-10 13:01:12.000 -07:00 f62f8e20 +│  (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 : kpnsulok f62f8e20 (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 -# Our working copy's commit ID changed -# because we made changes: +# 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 : zqplnxkt 4368f45c (no description set) +Working copy : kpnsulok 541325ae (no description set) Parent commit: orrkosyo 7fd1a60b master | (empty) Merge pull request #6 from Spa ceghost/patch-1 -$ jj log -@  zqplnxkt jjfan@example.com 2023-09-10 13:00:19.000 -07:00 4368f45c -│  (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 -~ - -# Add a branch so we can easily refer to this -# commit: - -$ jj branch create goodbye -$ jj log -@  zqplnxkt jjfan@example.com 2023-09-10 13:00:19.000 -07:00 goodbye 4368f45c -│  (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 -~ - -# Start working on a new change off of master: + +# Add a branch so we can easily refer to this +# commit: + +$ jj branch create goodbye +$ jj log +@  kpnsulok jjfan@example.com 2023-09-10 13:01:12.000 -07:00 goodbye 541325ae +│  (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 +~ + +# Start working on a new change off of master: + +$ jj co master +Working copy now at: vxvlyzxw bf08c1f2 (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 co master -Working copy now at: yxwyoysy d6f17d1b (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 -@  yxwyoysy jjfan@example.com 2023-09-10 13:00:18.000 -07:00 d6f17d1b -│  (empty) (no description set) -│ ◉  zqplnxkt jjfan@example.com 2023-09-10 13:00:19.000 -07:00 goodbye 4368f45c -├─╯  (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 -~ - -# 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 : yxwyoysy d6f17d1b (empty) (no description set) -Parent commit: orrkosyo 7fd1a60b master | (empty) Merge pull request #6 from Spa -ceghost/patch-1 +# Note that we were told the working copy is now empty (AKA clean). The +# "goodbye" change stayed in its own commit: + +$ jj log +@  vxvlyzxw jjfan@example.com 2023-09-10 13:01:11.000 -07:00 bf08c1f2 +│  (empty) (no description set) +│ ◉  kpnsulok jjfan@example.com 2023-09-10 13:01:12.000 -07:00 goodbye 541325ae +├─╯  (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 status +The working copy is clean +Working copy : vxvlyzxw bf08c1f2 (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: -# 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: +$ echo "Hello everyone!" > README +$ jj status +Working copy changes: +M README +Working copy : vxvlyzxw d126481b (no description set) +Parent commit: orrkosyo 7fd1a60b master | (empty) Merge pull request #6 from Spa +ceghost/patch-1 -$ jj describe -m everyone -Working copy now at: yxwyoysy 3ac53ca6 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: +# 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) ... -$ jj describe goodbye -m goodbye +# Now set it on the change we worked on before: -# Inspect the result: +$ jj describe goodbye -m goodbye -$ jj log -◉  zqplnxkt jjfan@example.com 2023-09-10 13:00:19.000 -07:00 goodbye 2d9b4209 -│  goodbye -│ @  yxwyoysy jjfan@example.com 2023-09-10 13:00:19.000 -07:00 3ac53ca6 -├─╯  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 -~ +# Inspect the result: + +$ jj log +◉  kpnsulok jjfan@example.com 2023-09-10 13:01:12.000 -07:00 goodbye 2759e2b4 +│  goodbye +│ @  vxvlyzxw jjfan@example.com 2023-09-10 13:01:12.000 -07:00 c9001f02 +├─╯  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 +~