Mercurial > hg > mercurial-crew-with-dirclash
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) |