10
votes

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?

3

3 Answers

16
votes

Yes it can. If you take a look at the TortoiseHg manual you'll find section 4.12 entitled "Rename Guessing". To quote:

  1. Select one or more Unrevisioned Files
  2. Slide the similarity bar (Minimum Similarity Percentage) to the percentage match you want
  3. Press either Find Renames or Find Copies
  4. Select candidate matches and accept good matches
  5. 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.

5
votes

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.

4
votes

I have my global settings (mercurial.ini) file configured with:

[defaults]
addremove = --similarity 100

If you ask me, this should be on by default.