upvote
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.
reply
No they're saying that it will explicitly record the move, unlike Git which has to guess (it often fails).
reply
Git does record the move, and you don't have to use the git ui to do it. Lore says it requires `lore stage move` to record it. More details in the reply to your other comment.
reply
They're actually saying it's better than `git mv`, because it actually records the move, unlike Git.
reply
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.

reply
> Git knows that the file was renamed even without using git to do the rename.

No it doesn't. Git knows that file A was deleted and file B was created, and if they have the same content then it will guess that it was a rename. But it's a heuristic that doesn't always work. E.g. I think it doesn't try to guess for large diffs, and it doesn't work if you modify the file in the same commit.

reply