comparison mercurial/hg.py @ 83:9fd5b35cfc45

Add -q quiet option Make -d and -v do something Add a bunch of debug and note messages
author mpm@selenic.com
date Tue, 17 May 2005 11:06:59 -0800
parents 837d473d54d5
children 58a1a0425c9b
comparison
equal deleted inserted replaced
82:7ed96baa7caa 83:9fd5b35cfc45
466 466
467 # check in files 467 # check in files
468 new = {} 468 new = {}
469 linkrev = self.changelog.count() 469 linkrev = self.changelog.count()
470 for f in update: 470 for f in update:
471 self.ui.note(f + "\n")
471 try: 472 try:
472 t = file(f).read() 473 t = file(f).read()
473 except IOError: 474 except IOError:
474 remove.append(f) 475 remove.append(f)
475 continue 476 continue
513 514
514 l = mmap.keys() 515 l = mmap.keys()
515 l.sort() 516 l.sort()
516 stats = [] 517 stats = []
517 for f in l: 518 for f in l:
519 self.ui.note(f + "\n")
518 r = self.file(f) 520 r = self.file(f)
519 t = r.revision(mmap[f]) 521 t = r.revision(mmap[f])
520 try: 522 try:
521 file(f, "w").write(t) 523 file(f, "w").write(t)
522 except: 524 except:
654 656
655 return nl 657 return nl
656 658
657 def getchangegroup(self, remote): 659 def getchangegroup(self, remote):
658 tip = remote.branches([])[0] 660 tip = remote.branches([])[0]
661 self.ui.debug("remote tip branch is %s:%s\n" %
662 (short(tip[0]), short(tip[1])))
659 m = self.changelog.nodemap 663 m = self.changelog.nodemap
660 unknown = [tip] 664 unknown = [tip]
661 search = [] 665 search = []
662 fetch = [] 666 fetch = []
663 667
664 if tip[0] in m: 668 if tip[0] in m:
669 self.ui.note("nothing to do!\n")
665 return None 670 return None
666 671
667 while unknown: 672 while unknown:
668 n = unknown.pop(0) 673 n = unknown.pop(0)
669 if n == nullid: break 674 if n == nullid: break
670 if n[1] and n[1] in m: # do we know the base? 675 if n[1] and n[1] in m: # do we know the base?
676 self.ui.debug("found incomplete branch %s\n" % short(n[1]))
671 search.append(n) # schedule branch range for scanning 677 search.append(n) # schedule branch range for scanning
672 else: 678 else:
673 for b in remote.branches([n[2], n[3]]): 679 for b in remote.branches([n[2], n[3]]):
674 if b[0] in m: 680 if b[0] in m:
675 if n[1] not in fetch: 681 if n[1] not in fetch:
682 self.ui.debug("found new changeset %s\n" %
683 short(n[1]))
676 fetch.append(n[1]) # earliest unknown 684 fetch.append(n[1]) # earliest unknown
677 else: 685 else:
678 unknown.append(b) 686 unknown.append(b)
679 687
680 while search: 688 while search:
683 p = n[0] 691 p = n[0]
684 f = 1 692 f = 1
685 for i in l + [n[1]]: 693 for i in l + [n[1]]:
686 if i in m: 694 if i in m:
687 if f <= 4: 695 if f <= 4:
696 self.ui.debug("found new branch changeset %s\n" %
697 short(p))
688 fetch.append(p) 698 fetch.append(p)
689 else: 699 else:
700 self.ui.debug("narrowed branch search to %s:%s\n"
701 % (short(p), short(i)))
690 search.append((p, i)) 702 search.append((p, i))
691 break 703 break
692 p, f = i, f * 2 704 p, f = i, f * 2
693 705
694 for f in fetch: 706 for f in fetch:
695 if f in m: 707 if f in m:
696 raise "already have", hex(f[:4]) 708 raise "already have", short(f[:4])
709
710 self.ui.note("merging new changesets starting at " +
711 " ".join([short(f) for f in fetch]) + "\n")
697 712
698 return remote.changegroup(fetch) 713 return remote.changegroup(fetch)
699 714
700 def changegroup(self, basenodes): 715 def changegroup(self, basenodes):
701 nodes = self.newer(basenodes) 716 nodes = self.newer(basenodes)
750 return source.read(l - 4 + add) 765 return source.read(l - 4 + add)
751 766
752 tr = self.transaction() 767 tr = self.transaction()
753 simple = True 768 simple = True
754 769
755 print "merging changesets" 770 self.ui.status("merging changesets\n")
756 # pull off the changeset group 771 # pull off the changeset group
757 csg = getchunk() 772 csg = getchunk()
758 co = self.changelog.tip() 773 co = self.changelog.tip()
759 cn = self.changelog.addgroup(csg, lambda x: self.changelog.count(), tr) 774 cn = self.changelog.addgroup(csg, lambda x: self.changelog.count(), tr)
760 775
761 print "merging manifests" 776 self.ui.status("merging manifests\n")
762 # pull off the manifest group 777 # pull off the manifest group
763 mfg = getchunk() 778 mfg = getchunk()
764 mo = self.manifest.tip() 779 mo = self.manifest.tip()
765 mm = self.manifest.addgroup(mfg, lambda x: self.changelog.rev(x), tr) 780 mm = self.manifest.addgroup(mfg, lambda x: self.changelog.rev(x), tr)
766 781
768 if self.changelog.ancestor(co, cn) != co: 783 if self.changelog.ancestor(co, cn) != co:
769 simple = False 784 simple = False
770 resolverev = self.changelog.count() 785 resolverev = self.changelog.count()
771 786
772 # process the files 787 # process the files
773 print "merging files" 788 self.ui.status("merging files\n")
774 new = {} 789 new = {}
775 while 1: 790 while 1:
776 f = getchunk(4) 791 f = getchunk(4)
777 if not f: break 792 if not f: break
778 fg = getchunk() 793 fg = getchunk()
846 def __init__(self, ui, path): 861 def __init__(self, ui, path):
847 self.url = path.replace("hg://", "http://", 1) 862 self.url = path.replace("hg://", "http://", 1)
848 self.ui = ui 863 self.ui = ui
849 864
850 def do_cmd(self, cmd, **args): 865 def do_cmd(self, cmd, **args):
866 self.ui.debug("sending %s command\n" % cmd)
851 q = {"cmd": cmd} 867 q = {"cmd": cmd}
852 q.update(args) 868 q.update(args)
853 qs = urllib.urlencode(q) 869 qs = urllib.urlencode(q)
854 cu = "%s?%s" % (self.url, qs) 870 cu = "%s?%s" % (self.url, qs)
855 return urllib.urlopen(cu) 871 return urllib.urlopen(cu)
882 return remoterepository(ui, path) 898 return remoterepository(ui, path)
883 else: 899 else:
884 return localrepository(ui, path, create) 900 return localrepository(ui, path, create)
885 901
886 class ui: 902 class ui:
887 def __init__(self, verbose=False, debug=False): 903 def __init__(self, verbose=False, debug=False, quiet=False):
888 self.verbose = verbose 904 self.quiet = quiet and not verbose and not debug
905 self.verbose = verbose or debug
906 self.debugflag = debug
889 def write(self, *args): 907 def write(self, *args):
890 for a in args: 908 for a in args:
891 sys.stdout.write(str(a)) 909 sys.stdout.write(str(a))
892 def prompt(self, msg, pat): 910 def prompt(self, msg, pat):
893 while 1: 911 while 1:
894 sys.stdout.write(msg) 912 sys.stdout.write(msg)
895 r = sys.stdin.readline()[:-1] 913 r = sys.stdin.readline()[:-1]
896 if re.match(pat, r): 914 if re.match(pat, r):
897 return r 915 return r
898 def status(self, *msg): 916 def status(self, *msg):
899 self.write(*msg) 917 if not self.quiet: self.write(*msg)
900 def warn(self, msg): 918 def warn(self, msg):
901 self.write(*msg) 919 self.write(*msg)
902 def note(self, msg): 920 def note(self, msg):
903 if self.verbose: self.write(*msg) 921 if self.verbose: self.write(*msg)
904 def debug(self, msg): 922 def debug(self, msg):
905 if self.debug: self.write(*msg) 923 if self.debugflag: self.write(*msg)
906 def edit(self, text): 924 def edit(self, text):
907 (fd, name) = tempfile.mkstemp("hg") 925 (fd, name) = tempfile.mkstemp("hg")
908 f = os.fdopen(fd, "w") 926 f = os.fdopen(fd, "w")
909 f.write(text) 927 f.write(text)
910 f.close() 928 f.close()