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 ot |
|
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 |
s |
|
832 | self.write(msg, " ") | |
824 |
r = s |
|
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