mercurial/scmutil.py
changeset 50928 d718eddf01d9
parent 50919 b3174be5e7f7
child 50929 18c8c18993f0
equal deleted inserted replaced
50927:7a8ea1397816 50928:d718eddf01d9
   231         if isinstance(reason, str):
   231         if isinstance(reason, str):
   232             # SSLError of Python 2.7.9 contains a unicode
   232             # SSLError of Python 2.7.9 contains a unicode
   233             reason = encoding.unitolocal(reason)
   233             reason = encoding.unitolocal(reason)
   234         ui.error(_(b"abort: error: %s\n") % stringutil.forcebytestr(reason))
   234         ui.error(_(b"abort: error: %s\n") % stringutil.forcebytestr(reason))
   235     except (IOError, OSError) as inst:
   235     except (IOError, OSError) as inst:
   236         if (
   236         if hasattr(inst, "args") and inst.args and inst.args[0] == errno.EPIPE:
   237             util.safehasattr(inst, "args")
       
   238             and inst.args
       
   239             and inst.args[0] == errno.EPIPE
       
   240         ):
       
   241             pass
   237             pass
   242         elif getattr(inst, "strerror", None):  # common IOError or OSError
   238         elif getattr(inst, "strerror", None):  # common IOError or OSError
   243             if getattr(inst, "filename", None) is not None:
   239             if getattr(inst, "filename", None) is not None:
   244                 ui.error(
   240                 ui.error(
   245                     _(b"abort: %s: '%s'\n")
   241                     _(b"abort: %s: '%s'\n")
   559             hexnode = hex(node)
   555             hexnode = hex(node)
   560             nodetree = None
   556             nodetree = None
   561             if cache is not None:
   557             if cache is not None:
   562                 nodetree = cache.get(b'disambiguationnodetree')
   558                 nodetree = cache.get(b'disambiguationnodetree')
   563             if not nodetree:
   559             if not nodetree:
   564                 if util.safehasattr(parsers, 'nodetree'):
   560                 if hasattr(parsers, 'nodetree'):
   565                     # The CExt is the only implementation to provide a nodetree
   561                     # The CExt is the only implementation to provide a nodetree
   566                     # class so far.
   562                     # class so far.
   567                     index = cl.index
   563                     index = cl.index
   568                     if util.safehasattr(index, 'get_cindex'):
   564                     if hasattr(index, 'get_cindex'):
   569                         # the rust wrapped need to give access to its internal index
   565                         # the rust wrapped need to give access to its internal index
   570                         index = index.get_cindex()
   566                         index = index.get_cindex()
   571                     nodetree = parsers.nodetree(index, len(revs))
   567                     nodetree = parsers.nodetree(index, len(revs))
   572                     for r in revs:
   568                     for r in revs:
   573                         nodetree.insert(r)
   569                         nodetree.insert(r)
  1064     assert fixphase or targetphase is None
  1060     assert fixphase or targetphase is None
  1065     if not replacements and not moves:
  1061     if not replacements and not moves:
  1066         return
  1062         return
  1067 
  1063 
  1068     # translate mapping's other forms
  1064     # translate mapping's other forms
  1069     if not util.safehasattr(replacements, 'items'):
  1065     if not hasattr(replacements, 'items'):
  1070         replacements = {(n,): () for n in replacements}
  1066         replacements = {(n,): () for n in replacements}
  1071     else:
  1067     else:
  1072         # upgrading non tuple "source" to tuple ones for BC
  1068         # upgrading non tuple "source" to tuple ones for BC
  1073         repls = {}
  1069         repls = {}
  1074         for key, value in replacements.items():
  1070         for key, value in replacements.items():