##// END OF EJS Templates
Make prompting go...
mpm@selenic.com -
r107:707a7481 default
parent child Browse files
Show More
@@ -87,7 +87,9 b' def diff(files = None, node1 = None, nod'
87 options = {}
87 options = {}
88 opts = [('v', 'verbose', None, 'verbose'),
88 opts = [('v', 'verbose', None, 'verbose'),
89 ('d', 'debug', None, 'debug'),
89 ('d', 'debug', None, 'debug'),
90 ('q', 'quiet', None, 'quiet')]
90 ('q', 'quiet', None, 'quiet'),
91 ('y', 'noninteractive', None, 'run non-interactively'),
92 ]
91
93
92 args = fancyopts.fancyopts(sys.argv[1:], opts, options,
94 args = fancyopts.fancyopts(sys.argv[1:], opts, options,
93 'hg [options] <command> [command options] [files]')
95 'hg [options] <command> [command options] [files]')
@@ -98,7 +100,8 b' try:'
98 except:
100 except:
99 cmd = ""
101 cmd = ""
100
102
101 ui = hg.ui(options["verbose"], options["debug"], options["quiet"])
103 ui = hg.ui(options["verbose"], options["debug"], options["quiet"],
104 not options["noninteractive"])
102
105
103 if cmd == "init":
106 if cmd == "init":
104 repo = hg.repository(ui, ".", create=1)
107 repo = hg.repository(ui, ".", create=1)
@@ -348,6 +351,9 b' elif cmd == "dumpmanifest":'
348 for f in files:
351 for f in files:
349 print hg.hex(m[f]), f
352 print hg.hex(m[f]), f
350
353
354 elif cmd == "debugprompt":
355 print ui.prompt(args[0], args[1], args[2])
356
351 elif cmd == "debughash":
357 elif cmd == "debughash":
352 f = repo.file(args[0])
358 f = repo.file(args[0])
353 print f.encodepath(args[0])
359 print f.encodepath(args[0])
@@ -675,7 +675,7 b' class localrepository:'
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
@@ -691,8 +691,10 b' class localrepository:'
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
@@ -705,8 +707,10 b' class localrepository:'
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:
@@ -811,26 +815,33 b' def repository(ui, path=None, create=0):'
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")
General Comments 0
You need to be logged in to leave comments. Login now