##// END OF EJS Templates
copies: split the copies api for "normal" and merge cases (API)
Matt Mackall -
r15774:0bd17a4b default
parent child Browse files
Show More
@@ -1201,7 +1201,7 b' def add(ui, repo, match, dryrun, listsub'
1201 def duplicatecopies(repo, rev, p1, p2):
1201 def duplicatecopies(repo, rev, p1, p2):
1202 "Reproduce copies found in the source revision in the dirstate for grafts"
1202 "Reproduce copies found in the source revision in the dirstate for grafts"
1203 # Here we simulate the copies and renames in the source changeset
1203 # Here we simulate the copies and renames in the source changeset
1204 cop, diver = copies.copies(repo, repo[rev], repo[p1], repo[p2], True)
1204 cop, diver = copies.mergecopies(repo, repo[rev], repo[p1], repo[p2])
1205 m1 = repo[rev].manifest()
1205 m1 = repo[rev].manifest()
1206 m2 = repo[p1].manifest()
1206 m2 = repo[p1].manifest()
1207 for k, v in cop.iteritems():
1207 for k, v in cop.iteritems():
@@ -5206,14 +5206,13 b' def status(ui, repo, *pats, **opts):'
5206 changestates = zip(states, 'MAR!?IC', stat)
5206 changestates = zip(states, 'MAR!?IC', stat)
5207
5207
5208 if (opts.get('all') or opts.get('copies')) and not opts.get('no_status'):
5208 if (opts.get('all') or opts.get('copies')) and not opts.get('no_status'):
5209 ctxn = repo[nullid]
5210 ctx1 = repo[node1]
5209 ctx1 = repo[node1]
5211 ctx2 = repo[node2]
5210 ctx2 = repo[node2]
5212 added = stat[1]
5211 added = stat[1]
5213 if node2 is None:
5212 if node2 is None:
5214 added = stat[0] + stat[1] # merged?
5213 added = stat[0] + stat[1] # merged?
5215
5214
5216 for k, v in copies.copies(repo, ctx1, ctx2, ctxn)[0].iteritems():
5215 for k, v in copies.pathcopies(ctx1, ctx2).iteritems():
5217 if k in added:
5216 if k in added:
5218 copy[k] = v
5217 copy[k] = v
5219 elif v in added:
5218 elif v in added:
@@ -84,7 +84,10 b' def _findlimit(repo, a, b):'
84 return None
84 return None
85 return limit
85 return limit
86
86
87 def copies(repo, c1, c2, ca, checkdirs=False):
87 def pathcopies(c1, c2):
88 return mergecopies(c1._repo, c1, c2, c1._repo["null"], False)[0]
89
90 def mergecopies(repo, c1, c2, ca, checkdirs=True):
88 """
91 """
89 Find moves and copies between context c1 and c2
92 Find moves and copies between context c1 and c2
90 """
93 """
@@ -183,7 +183,7 b' def manifestmerge(repo, p1, p2, pa, over'
183 pa = p1.p1()
183 pa = p1.p1()
184 elif pa and repo.ui.configbool("merge", "followcopies", True):
184 elif pa and repo.ui.configbool("merge", "followcopies", True):
185 dirs = repo.ui.configbool("merge", "followdirs", True)
185 dirs = repo.ui.configbool("merge", "followdirs", True)
186 copy, diverge = copies.copies(repo, p1, p2, pa, dirs)
186 copy, diverge = copies.mergecopies(repo, p1, p2, pa, dirs)
187 for of, fl in diverge.iteritems():
187 for of, fl in diverge.iteritems():
188 act("divergent renames", "dr", of, fl)
188 act("divergent renames", "dr", of, fl)
189
189
@@ -1600,7 +1600,7 b' def diff(repo, node1=None, node2=None, m'
1600
1600
1601 copy = {}
1601 copy = {}
1602 if opts.git or opts.upgrade:
1602 if opts.git or opts.upgrade:
1603 copy = copies.copies(repo, ctx1, ctx2, repo[nullid])[0]
1603 copy = copies.pathcopies(ctx1, ctx2)
1604
1604
1605 difffn = lambda opts, losedata: trydiff(repo, revs, ctx1, ctx2,
1605 difffn = lambda opts, losedata: trydiff(repo, revs, ctx1, ctx2,
1606 modified, added, removed, copy, getfilectx, opts, losedata, prefix)
1606 modified, added, removed, copy, getfilectx, opts, losedata, prefix)
General Comments 0
You need to be logged in to leave comments. Login now