##// END OF EJS Templates
merge with upstream
Benoit Boissinot -
r3320:fa59d676 merge default
parent child Browse files
Show More
@@ -462,11 +462,33 b' class localrepository(repo.repository):'
462 desc=_('working directory of %s') % self.origroot)
462 desc=_('working directory of %s') % self.origroot)
463
463
464 def checkfilemerge(self, filename, text, filelog, manifest1, manifest2):
464 def checkfilemerge(self, filename, text, filelog, manifest1, manifest2):
465 "determine whether a new filenode is needed"
465 """
466 Determine whether a new filenode is needed and what parent
467 and rename information is needed for a file commit.
468
469 Returns (old entry, file parent 1, file parent 2, metadata)
470
471 If old entry is not None, a commit is not needed.
472 """
466 fp1 = manifest1.get(filename, nullid)
473 fp1 = manifest1.get(filename, nullid)
467 fp2 = manifest2.get(filename, nullid)
474 fp2 = manifest2.get(filename, nullid)
468
475
469 if fp2 != nullid:
476 meta = {}
477 cp = self.dirstate.copied(filename)
478 if cp:
479 meta["copy"] = cp
480 if not manifest2: # not a branch merge
481 meta["copyrev"] = hex(manifest1.get(cp, nullid))
482 fp2 = nullid
483 elif fp2 != nullid: # copied on remote side
484 meta["copyrev"] = hex(manifest1.get(cp, nullid))
485 else: # copied on local side, reversed
486 meta["copyrev"] = hex(manifest2.get(cp))
487 fp2 = nullid
488 self.ui.debug(_(" %s: copy %s:%s\n") %
489 (filename, cp, meta["copyrev"]))
490 fp1 = nullid
491 elif fp2 != nullid:
470 # is one parent an ancestor of the other?
492 # is one parent an ancestor of the other?
471 fpa = filelog.ancestor(fp1, fp2)
493 fpa = filelog.ancestor(fp1, fp2)
472 if fpa == fp1:
494 if fpa == fp1:
@@ -475,10 +497,10 b' class localrepository(repo.repository):'
475 fp2 = nullid
497 fp2 = nullid
476
498
477 # is the file unmodified from the parent? report existing entry
499 # is the file unmodified from the parent? report existing entry
478 if fp2 == nullid and text == filelog.read(fp1):
500 if fp2 == nullid and not filelog.cmp(fp1, text):
479 return (fp1, None, None)
501 return (fp1, None, None, {})
480
502
481 return (None, fp1, fp2)
503 return (None, fp1, fp2, meta)
482
504
483 def rawcommit(self, files, text, user, date, p1=None, p2=None, wlock=None):
505 def rawcommit(self, files, text, user, date, p1=None, p2=None, wlock=None):
484 orig_parent = self.dirstate.parents()[0] or nullid
506 orig_parent = self.dirstate.parents()[0] or nullid
@@ -506,12 +528,12 b' class localrepository(repo.repository):'
506 m1.set(f, util.is_exec(self.wjoin(f), m1.execf(f)))
528 m1.set(f, util.is_exec(self.wjoin(f), m1.execf(f)))
507 r = self.file(f)
529 r = self.file(f)
508
530
509 (entry, fp1, fp2) = self.checkfilemerge(f, t, r, m1, m2)
531 entry, fp1, fp2, meta = self.checkfilemerge(f, t, r, m1, m2)
510 if entry:
532 if entry:
511 m1[f] = entry
533 m1[f] = entry
512 continue
534 continue
513
535
514 m1[f] = r.add(t, {}, tr, linkrev, fp1, fp2)
536 m1[f] = r.add(t, meta, tr, linkrev, fp1, fp2)
515 changed.append(f)
537 changed.append(f)
516 if update_dirstate:
538 if update_dirstate:
517 self.dirstate.update([f], "n")
539 self.dirstate.update([f], "n")
@@ -589,15 +611,7 b' class localrepository(repo.repository):'
589
611
590 r = self.file(f)
612 r = self.file(f)
591
613
592 meta = {}
614 entry, fp1, fp2, meta = self.checkfilemerge(f, t, r, m1, m2)
593 cp = self.dirstate.copied(f)
594 if cp:
595 meta["copy"] = cp
596 meta["copyrev"] = hex(m1.get(cp, m2.get(cp, nullid)))
597 self.ui.debug(_(" %s: copy %s:%s\n") % (f, cp, meta["copyrev"]))
598 fp1, fp2 = nullid, nullid
599 else:
600 entry, fp1, fp2 = self.checkfilemerge(f, t, r, m1, m2)
601 if entry:
615 if entry:
602 new[f] = entry
616 new[f] = entry
603 continue
617 continue
@@ -359,6 +359,8 b' def recordupdates(repo, action, branchme'
359 repo.dirstate.update([f], 'r')
359 repo.dirstate.update([f], 'r')
360 if f != fd:
360 if f != fd:
361 repo.dirstate.copy(f, fd)
361 repo.dirstate.copy(f, fd)
362 else:
363 repo.dirstate.copy(f2, fd)
362
364
363 def update(repo, node, branchmerge=False, force=False, partial=None,
365 def update(repo, node, branchmerge=False, force=False, partial=None,
364 wlock=None, show_stats=True, remind=True):
366 wlock=None, show_stats=True, remind=True):
@@ -23,3 +23,5 b' hg merge -y --debug'
23 hg status -AC
23 hg status -AC
24 cat b
24 cat b
25 hg ci -m "merge" -d "0 0"
25 hg ci -m "merge" -d "0 0"
26 hg debugindex .hg/data/b.i
27 hg debugrename b No newline at end of file
@@ -20,3 +20,7 b' M b2'
20 R a
20 R a
21 C c2
21 C c2
22 blahblah
22 blahblah
23 rev offset length base linkrev nodeid p1 p2
24 0 0 67 0 1 dc51707dfc98 000000000000 000000000000
25 1 67 72 1 3 b2494a44f0a9 000000000000 dc51707dfc98
26 renamed from a:dd03b83622e78778b403775d0d074b9ac7387a66
@@ -42,6 +42,7 b' 1 files updated, 2 files merged, 0 files'
42 --------------
42 --------------
43 M a
43 M a
44 M b
44 M b
45 a
45 --------------
46 --------------
46
47
47 --------------
48 --------------
@@ -85,6 +86,7 b' 0 files updated, 2 files merged, 0 files'
85 (branch merge, don't forget to commit)
86 (branch merge, don't forget to commit)
86 --------------
87 --------------
87 M b
88 M b
89 a
88 --------------
90 --------------
89
91
90 --------------
92 --------------
@@ -128,6 +130,7 b' 0 files updated, 2 files merged, 0 files'
128 (branch merge, don't forget to commit)
130 (branch merge, don't forget to commit)
129 --------------
131 --------------
130 M b
132 M b
133 a
131 C a
134 C a
132 --------------
135 --------------
133
136
@@ -172,6 +175,7 b' 0 files updated, 2 files merged, 0 files'
172 (branch merge, don't forget to commit)
175 (branch merge, don't forget to commit)
173 --------------
176 --------------
174 M b
177 M b
178 a
175 --------------
179 --------------
176
180
177 --------------
181 --------------
@@ -430,6 +434,7 b' 0 files updated, 2 files merged, 0 files'
430 (branch merge, don't forget to commit)
434 (branch merge, don't forget to commit)
431 --------------
435 --------------
432 M b
436 M b
437 a
433 --------------
438 --------------
434
439
435 --------------
440 --------------
@@ -452,6 +457,7 b' 1 files updated, 2 files merged, 0 files'
452 (branch merge, don't forget to commit)
457 (branch merge, don't forget to commit)
453 --------------
458 --------------
454 M b
459 M b
460 a
455 M c
461 M c
456 --------------
462 --------------
457
463
General Comments 0
You need to be logged in to leave comments. Login now