--- a/mercurial/copies.py Wed Jul 26 17:58:19 2017 -0400
+++ b/mercurial/copies.py Wed Aug 16 00:25:20 2017 +0530
@@ -304,6 +304,28 @@
def mergecopies(repo, c1, c2, base):
"""
+ The basic algorithm for copytracing. Copytracing is used in commands like
+ rebase, merge, unshelve, etc to merge files that were moved/ copied in one
+ merge parent and modified in another. For example:
+
+ o ---> 4 another commit
+ |
+ | o ---> 3 commit that modifies a.txt
+ | /
+ o / ---> 2 commit that moves a.txt to b.txt
+ |/
+ o ---> 1 merge base
+
+ If we try to rebase revision 3 on revision 4, since there is no a.txt in
+ revision 4, and if user have copytrace disabled, we prints the following
+ message:
+
+ ```other changed <file> which local deleted```
+
+ If copytrace is enabled, this function finds all the new files that were
+ added from merge base up to the top commit (here 4), and for each file it
+ checks if this file was copied from another file (a.txt in the above case).
+
Find moves and copies between context c1 and c2 that are relevant
for merging. 'base' will be used as the merge base.