comparison mercurial/hg.py @ 107:707a7481a861

Make prompting go Minor UI tweaking Add merge prompting
author mpm@selenic.com
date Wed, 18 May 2005 18:25:37 -0800
parents 3dde7c87e36d
children 95699294f580
comparison
equal deleted inserted replaced
106:e8d4bbf4c9e2 107:707a7481a861
673 self.ui.status("resolving manifests\n") 673 self.ui.status("resolving manifests\n")
674 ma = self.manifest.ancestor(mm, mo) 674 ma = self.manifest.ancestor(mm, mo)
675 omap = self.manifest.read(mo) # other 675 omap = self.manifest.read(mo) # other
676 amap = self.manifest.read(ma) # ancestor 676 amap = self.manifest.read(ma) # ancestor
677 mmap = self.manifest.read(mm) # mine 677 mmap = self.manifest.read(mm) # mine
678 self.ui.debug("ancestor %s local %s other %s\n" % 678 self.ui.debug("ancestor %s local %s remote %s\n" %
679 (short(ma), short(mm), short(mo))) 679 (short(ma), short(mm), short(mo)))
680 nmap = {} 680 nmap = {}
681 681
682 for f, mid in mmap.iteritems(): 682 for f, mid in mmap.iteritems():
683 if f in omap: 683 if f in omap:
689 else: 689 else:
690 nmap[f] = mid # keep ours 690 nmap[f] = mid # keep ours
691 del omap[f] 691 del omap[f]
692 elif f in amap: 692 elif f in amap:
693 if mid != amap[f]: 693 if mid != amap[f]:
694 self.ui.debug("local changed %s which other deleted\n" % f) 694 r = self.ui.prompt(
695 pass # we should prompt here 695 ("local changed %s which remote deleted\n" % f) +
696 "(k)eep or (d)elete?", "[kd]", "k")
697 if r == "k": nmap[f] = mid
696 else: 698 else:
697 self.ui.debug("other deleted %s\n" % f) 699 self.ui.debug("other deleted %s\n" % f)
698 pass # other deleted it 700 pass # other deleted it
699 else: 701 else:
700 self.ui.debug("local created %s\n" %f) 702 self.ui.debug("local created %s\n" %f)
703 del mmap 705 del mmap
704 706
705 for f, oid in omap.iteritems(): 707 for f, oid in omap.iteritems():
706 if f in amap: 708 if f in amap:
707 if oid != amap[f]: 709 if oid != amap[f]:
708 self.ui.debug("other changed %s which we deleted\n" % f) 710 r = self.ui.prompt(
709 pass # this is the nasty case, we should prompt 711 ("remote changed %s which local deleted\n" % f) +
712 "(k)eep or (d)elete?", "[kd]", "k")
713 if r == "k": nmap[f] = oid
710 else: 714 else:
711 pass # probably safe 715 pass # probably safe
712 else: 716 else:
713 self.ui.debug("remote created %s\n" % f) 717 self.ui.debug("remote created %s\n" % f)
714 nmap[f] = new.get(f, oid) # remote created it 718 nmap[f] = new.get(f, oid) # remote created it
809 return remoterepository(ui, path) 813 return remoterepository(ui, path)
810 else: 814 else:
811 return localrepository(ui, path, create) 815 return localrepository(ui, path, create)
812 816
813 class ui: 817 class ui:
814 def __init__(self, verbose=False, debug=False, quiet=False): 818 def __init__(self, verbose=False, debug=False, quiet=False,
819 interactive=True):
815 self.quiet = quiet and not verbose and not debug 820 self.quiet = quiet and not verbose and not debug
816 self.verbose = verbose or debug 821 self.verbose = verbose or debug
817 self.debugflag = debug 822 self.debugflag = debug
823 self.interactive = interactive
818 def write(self, *args): 824 def write(self, *args):
819 for a in args: 825 for a in args:
820 sys.stdout.write(str(a)) 826 sys.stdout.write(str(a))
821 def prompt(self, msg, pat): 827 def readline(self):
828 return sys.stdin.readline()[:-1]
829 def prompt(self, msg, pat, default = "y"):
830 if not self.interactive: return default
822 while 1: 831 while 1:
823 sys.stdout.write(msg) 832 self.write(msg, " ")
824 r = sys.stdin.readline()[:-1] 833 r = self.readline()
825 if re.match(pat, r): 834 if re.match(pat, r):
826 return r 835 return r
836 else:
837 self.write("unrecognized response\n")
827 def status(self, *msg): 838 def status(self, *msg):
828 if not self.quiet: self.write(*msg) 839 if not self.quiet: self.write(*msg)
829 def warn(self, msg): 840 def warn(self, msg):
830 self.write(*msg) 841 self.write(*msg)
831 def note(self, msg): 842 def note(self, *msg):
832 if self.verbose: self.write(*msg) 843 if self.verbose: self.write(*msg)
833 def debug(self, msg): 844 def debug(self, *msg):
834 if self.debugflag: self.write(*msg) 845 if self.debugflag: self.write(*msg)
835 def edit(self, text): 846 def edit(self, text):
836 (fd, name) = tempfile.mkstemp("hg") 847 (fd, name) = tempfile.mkstemp("hg")
837 f = os.fdopen(fd, "w") 848 f = os.fdopen(fd, "w")
838 f.write(text) 849 f.write(text)