comparison mercurial/cmdutil.py @ 23403:edf29f9c15f0 stable

revert: look for copy information for all local modifications Renaming a file over an existing one marks the file as modified. So we track rename source in modified file too.
author Pierre-Yves David <pierre-yves.david@fb.com>
date Tue, 25 Nov 2014 19:40:54 -0800
parents b564330d4b1f
children b913c394386f 9601229ed361
comparison
equal deleted inserted replaced
23402:2963d5c9d90b 23403:edf29f9c15f0
2529 # or just forget etc) 2529 # or just forget etc)
2530 if parent == node: 2530 if parent == node:
2531 dsmodified = modified 2531 dsmodified = modified
2532 dsadded = added 2532 dsadded = added
2533 dsremoved = removed 2533 dsremoved = removed
2534 # store all local modifications, useful later for rename detection
2535 localchanges = dsmodified | dsadded
2534 modified, added, removed = set(), set(), set() 2536 modified, added, removed = set(), set(), set()
2535 else: 2537 else:
2536 changes = repo.status(node1=parent, match=m) 2538 changes = repo.status(node1=parent, match=m)
2537 dsmodified = set(changes[0]) 2539 dsmodified = set(changes[0])
2538 dsadded = set(changes[1]) 2540 dsadded = set(changes[1])
2539 dsremoved = set(changes[2]) 2541 dsremoved = set(changes[2])
2542 # store all local modifications, useful later for rename detection
2543 localchanges = dsmodified | dsadded
2540 2544
2541 # only take into account for removes between wc and target 2545 # only take into account for removes between wc and target
2542 clean |= dsremoved - removed 2546 clean |= dsremoved - removed
2543 dsremoved &= removed 2547 dsremoved &= removed
2544 # distinct between dirstate remove and other 2548 # distinct between dirstate remove and other
2568 dsadded |= mergeadd 2572 dsadded |= mergeadd
2569 dsmodified -= mergeadd 2573 dsmodified -= mergeadd
2570 2574
2571 # if f is a rename, update `names` to also revert the source 2575 # if f is a rename, update `names` to also revert the source
2572 cwd = repo.getcwd() 2576 cwd = repo.getcwd()
2573 for f in dsadded: 2577 for f in localchanges:
2574 src = repo.dirstate.copied(f) 2578 src = repo.dirstate.copied(f)
2575 # XXX should we check for rename down to target node? 2579 # XXX should we check for rename down to target node?
2576 if src and src not in names and repo.dirstate[src] == 'r': 2580 if src and src not in names and repo.dirstate[src] == 'r':
2577 dsremoved.add(src) 2581 dsremoved.add(src)
2578 names[src] = (repo.pathto(src, cwd), True) 2582 names[src] = (repo.pathto(src, cwd), True)