code: def call(path, *args, encoding="utf-8", show_command=False):
      
      returncode = 0
      output = None
      try:
          # 2015-10-10 zrong
          # 在 windows 上使用 universal_newlines=True
          # 会导致输出信息为中文时出现编码错误
          # 原因是 check_out 中读入 stdout 内容的 read 方法没有传递编码参数
          # 因此不再使用 universal_newlines=True 这个参数
          # 而改用直接返回 bytes，然后对其解码
          arg_list = get_args(path, *args)
          if show_command:
              print('git call args:', arg_list)
          output = subprocess.check_output(arg_list, 
                  stderr=subprocess.STDOUT)
          output = output.decode(encoding=encoding)
      except subprocess.CalledProcessError as err:
          returncode = err.returncode
          output = err.output.decode(encoding=encoding)
      return returncode, output
docs: 使用 subprocess.check_output 调用 git 命令。
  
      :param str path: git 仓库文件夹路径。
      :param \*args: git 的附加参数。
      :returns: 错误代码和调用结果。
      :rtype: int
      :rtype: string git 返回的信息，若执行出错则为错误信息。