← Back to context

Comment by ibejoeb

6 hours ago

> lore stage covers adds, edits, and deletes — you use the same command for all three. Stage a deleted file and Lore records the deletion for the next commit. Moves and renames are tracked too, through a dedicated subcommand: lore stage move <from> <to> records the rename so the file keeps its identity and history across the move instead of registering as a delete plus an add.

Oof. So this isn't compatible with any tools that move or rename files. I can't see how this will be acceptable for real-world use.

Isn't this just the same thing as `git mv`?

  • I don't think so, but I'm not sure. It seems to imply that renaming a file without using `lore stage` subcommands will record a delete and an add, meaning that changes made in a branch prior to the rename won't automatically propagate. Git will detect this without using it's own mv command.

  • They're actually saying it's better than `git mv`, because it actually records the move, unlike Git.

    • I think they're saying the opposite. It won't detect a filesystem-level move. It will simply record a delete and create without the relationship. Git does record the rename, though:

          ~/work/tmp/repo   git init . --quiet
          ~/work/tmp/repo master  echo 'foo' > foo.txt
          ~/work/tmp/repo master?  git add .
          ~/work/tmp/repo master+  git commit -m "create" --quiet
          ~/work/tmp/repo master  mv foo.txt bar.txt # no `git mv`
          ~/work/tmp/repo master*?  git add .
          ~/work/tmp/repo master+  git status --porcelain
          R  foo.txt -> bar.txt
          ~/work/tmp/repo master+  git commit -m "rename"
          [master a06c680] rename
           1 file changed, 0 insertions(+), 0 deletions(-)
           rename foo.txt => bar.txt (100%)
      

      Git knows that the file was renamed even without using git to do the rename. This means that it doesn't matter if you IDE, codemod, agent, or whatever does it. Git tracks that foo.txt and bar.txt refer to the same blob at different revisions.

      Maybe lore does the same, but the docs imply that it doesn't.

      --

      To summarize: lore will record relationship metadata only when performed with `lore stage move <from> <to>`, so you will have to intervene if your other tooling moves files.

      3 replies →