TortoiseHg Copy Similarity feature
-
18-09-2019 - |
Question
When committing changes to Mercurial, it can auto-detect move/copy/renames by using the command
hg addremove -similarity 100
The number after similarity indicates how similar two files need to be from 0-100% for mercurial to decide its a move, copy or rename instead of just a new file.
This is a great feature. Can TortoiseHg do this?
Solution
Yes it can. If you take a look at the TortoiseHg manual you'll find section 4.12 entitled "Rename Guessing". To quote:
- Select one or more Unrevisioned Files
- Slide the similarity bar (Minimum Similarity Percentage) to the percentage match you want
- Press either Find Renames or Find Copies
- Select candidate matches and accept good matches
- Repeat until all unversioned files are matched
The nice thing is step 5: you can actually toggle the similarity as you go, and Tortoise changes what files are considered renames on the fly. You can get most of what you want by sliding the bar carefully to the right percentage and re-checking.
OTHER TIPS
setting «-s 100» defaults for addremove is awesome idea; but hgrc.5 says that [defaults] is deprecated, so I'm using these:
[alias]
addremove = addremove --similarity 100
adrs = addremove --similarity 0.01
The latter is very useful for keeping track of binary data (such as cad files or drawings) that is uncompressed and distinctly segmented/layered.
I have my global settings (mercurial.ini) file configured with:
[defaults]
addremove = --similarity 100
If you ask me, this should be on by default.