Re:Ask HN: Can we do better than Git for version control?
by blibble on Sunday December 10, 2023 @12:32PM
(#38593187)
the rename won't be in your history because the tree and commit objects don't support renames
the tooling infers a rename based on the lack of a content change
Re:Ask HN: Can we do better than Git for version control?
by trevyn on Sunday December 10, 2023 @02:13PM
(#38593994)
Is there a difference?
Re:Ask HN: Can we do better than Git for version control?
by phyzome on Sunday December 10, 2023 @04:12PM
(#38595101)
Absolutely. In a move-and-edit situation, git will sometimes infer a rename and sometimes not, based on your local version of git, your settings, and the details of the edit. If inference fails, you may have a harder time resolving merge conflicts, performing cherry-picks, etc.
Re:Ask HN: Can we do better than Git for version control?
by trevyn on Friday December 15, 2023 @04:38AM
(#38652538)
So just make sure the moves and edits are in separate commits?
Re:Ask HN: Can we do better than Git for version control?
by phyzome on Sunday December 17, 2023 @08:38AM
(#38672754)
Yes, that's the standard workaround.
Re:Ask HN: Can we do better than Git for version control?
by dafelst on Sunday December 10, 2023 @05:54PM
(#38595865)
Absolutely, the inference is based on a set of heuristics and is often just plain wrong.
Re:Ask HN: Can we do better than Git for version control?
by rendall on Monday December 11, 2023 @09:43AM
(#38601054)
I've had one or two really annoying merges that were complicated by these renames. TIL thanks to these responses that it's not actually a rename.
Re:Ask HN: Can we do better than Git for version control?
by shard_ on Sunday December 10, 2023 @05:37PM
(#38595758)
`git mv` is just shorthand for `git rm` and `git add`. All Git knows is that there was a file called `oldfile` and there's now a file called `newfile`, and whether or not they have similar contents or filenames. It's only when you run `git status` or `git diff` or whatever that it actually tries to guess if anything was renamed. So what you're seeing isn't the rename being recorded in history but just that guess being correct. It's easy for it to become incorrect if you make some nontrivial changes or have multiple similar files.
Re:Ask HN: Can we do better than Git for version control?
by creatonez on Sunday December 10, 2023 @08:10PM
(#38596619)
The parent comment's suggestion is to commit each of these moves individually, which should guarantee that the detection algorithm will get it right. Will definitely pollute your history, though.
Re:Ask HN: Can we do better than Git for version control?
by Dylan16807 on Sunday December 10, 2023 @08:43PM
(#38596768)
> If you rename the file using git
Does nothing. Git won't remember you did it.
> and that is the only change in your file
This always works, but it means you need to choose between flaky rename detection and weird extra rename-only commits that probably don't compile.
If you rename the file using git and that is the only change in your file, then it works:
Commit that change and the rename is in your history.