code: def tree_to_stream(entries, write):
      
      ord_zero = ord('0')
      bit_mask = 7            # 3 bits set
  
      for binsha, mode, name in entries:
          mode_str = b''
          for i in xrange(6):
              mode_str = bchr(((mode >> (i * 3)) & bit_mask) + ord_zero) + mode_str
          # END for each 8 octal value
  
          # git slices away the first octal if its zero
          if byte_ord(mode_str[0]) == ord_zero:
              mode_str = mode_str[1:]
          # END save a byte
  
          # here it comes:  if the name is actually unicode, the replacement below
          # will not work as the binsha is not part of the ascii unicode encoding -
          # hence we must convert to an utf8 string for it to work properly.
          # According to my tests, this is exactly what git does, that is it just
          # takes the input literally, which appears to be utf8 on linux.
          if isinstance(name, text_type):
              name = name.encode(defenc)
          write(b''.join((mode_str, b' ', name, b'\0', binsha)))
docs: Write the give list of entries into a stream using its write method
      :param entries: **sorted** list of tuples with (binsha, mode, name)
      :param write: write method which takes a data string