From 518143743f60a3fc3864fe2f4a6784cc948c96a2 Mon Sep 17 00:00:00 2001 From: wangweichen Date: Thu, 13 Jul 2017 13:56:12 +0800 Subject: [PATCH 1/3] fix open func encoding error. --- .gitignore | 1 + git/refs/symbolic.py | 8 ++++---- git/repo/fun.py | 4 ++-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index d35cddebd..b3bc93624 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ nbproject .DS_Store /*egg-info /.tox +.idea/ \ No newline at end of file diff --git a/git/refs/symbolic.py b/git/refs/symbolic.py index 90ecb62c6..2d29ebdb6 100644 --- a/git/refs/symbolic.py +++ b/git/refs/symbolic.py @@ -76,7 +76,7 @@ def abspath(self): @classmethod def _get_packed_refs_path(cls, repo): try: - commondir = open(osp.join(repo.git_dir, 'commondir'), 'rt').readlines()[0].strip() + commondir = open(osp.join(repo.git_dir, 'commondir'), 'rt', encoding="utf-8").readlines()[0].strip() except (OSError, IOError): commondir = '.' repodir = osp.join(repo.git_dir, commondir) @@ -87,7 +87,7 @@ def _iter_packed_refs(cls, repo): """Returns an iterator yielding pairs of sha1/path pairs (as bytes) for the corresponding refs. :note: The packed refs file will be kept open as long as we iterate""" try: - with open(cls._get_packed_refs_path(repo), 'rt') as fp: + with open(cls._get_packed_refs_path(repo), 'rt', encoding="utf-8") as fp: for line in fp: line = line.strip() if not line: @@ -133,7 +133,7 @@ def _get_ref_info_helper(cls, repo, repodir, ref_path): point to, or None""" tokens = None try: - with open(osp.join(repodir, ref_path), 'rt') as fp: + with open(osp.join(repodir, ref_path), 'rt', encoding="utf-8") as fp: value = fp.read().rstrip() # Don't only split on spaces, but on whitespace, which allows to parse lines like # 60b64ef992065e2600bfef6187a97f92398a9144 branch 'master' of git-server:/path/to/repo @@ -173,7 +173,7 @@ def _get_ref_info(cls, repo, ref_path): return cls._get_ref_info_helper(repo, repo.git_dir, ref_path) except ValueError: try: - commondir = open(osp.join(repo.git_dir, 'commondir'), 'rt').readlines()[0].strip() + commondir = open(osp.join(repo.git_dir, 'commondir'), 'rt', encoding="utf-8").readlines()[0].strip() except (OSError, IOError): commondir = '.' diff --git a/git/repo/fun.py b/git/repo/fun.py index 6aefd9d66..dc229ba20 100644 --- a/git/repo/fun.py +++ b/git/repo/fun.py @@ -58,7 +58,7 @@ def find_worktree_git_dir(dotgit): return None try: - lines = open(dotgit, 'r').readlines() + lines = open(dotgit, 'r', encoding="utf-8").readlines() for key, value in [line.strip().split(': ') for line in lines]: if key == 'gitdir': return value @@ -73,7 +73,7 @@ def find_submodule_git_dir(d): return d try: - with open(d) as fp: + with open(d, encoding="utf-8") as fp: content = fp.read().rstrip() except (IOError, OSError): # it's probably not a file From d3e10783342ca24fd945766fac005ea0fedb89ec Mon Sep 17 00:00:00 2001 From: wangweichen Date: Thu, 13 Jul 2017 14:31:26 +0800 Subject: [PATCH 2/3] change codes with open func support encoding="utf-8" --- git/refs/symbolic.py | 10 +++++----- git/repo/fun.py | 18 +++++++++--------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/git/refs/symbolic.py b/git/refs/symbolic.py index 2d29ebdb6..8fb630959 100644 --- a/git/refs/symbolic.py +++ b/git/refs/symbolic.py @@ -1,5 +1,5 @@ import os - +import codecs from git.compat import ( string_types, defenc @@ -76,7 +76,7 @@ def abspath(self): @classmethod def _get_packed_refs_path(cls, repo): try: - commondir = open(osp.join(repo.git_dir, 'commondir'), 'rt', encoding="utf-8").readlines()[0].strip() + commondir = codecs.open(osp.join(repo.git_dir, 'commondir'), 'rt', encoding="utf-8").readlines()[0].strip() except (OSError, IOError): commondir = '.' repodir = osp.join(repo.git_dir, commondir) @@ -87,7 +87,7 @@ def _iter_packed_refs(cls, repo): """Returns an iterator yielding pairs of sha1/path pairs (as bytes) for the corresponding refs. :note: The packed refs file will be kept open as long as we iterate""" try: - with open(cls._get_packed_refs_path(repo), 'rt', encoding="utf-8") as fp: + with codecs.open(cls._get_packed_refs_path(repo), 'rt', encoding="utf-8") as fp: for line in fp: line = line.strip() if not line: @@ -133,7 +133,7 @@ def _get_ref_info_helper(cls, repo, repodir, ref_path): point to, or None""" tokens = None try: - with open(osp.join(repodir, ref_path), 'rt', encoding="utf-8") as fp: + with codecs.open(osp.join(repodir, ref_path), 'rt', encoding="utf-8") as fp: value = fp.read().rstrip() # Don't only split on spaces, but on whitespace, which allows to parse lines like # 60b64ef992065e2600bfef6187a97f92398a9144 branch 'master' of git-server:/path/to/repo @@ -173,7 +173,7 @@ def _get_ref_info(cls, repo, ref_path): return cls._get_ref_info_helper(repo, repo.git_dir, ref_path) except ValueError: try: - commondir = open(osp.join(repo.git_dir, 'commondir'), 'rt', encoding="utf-8").readlines()[0].strip() + commondir = codecs.open(osp.join(repo.git_dir, 'commondir'), 'rt', encoding="utf-8").readlines()[0].strip() except (OSError, IOError): commondir = '.' diff --git a/git/repo/fun.py b/git/repo/fun.py index dc229ba20..21f1ec00c 100644 --- a/git/repo/fun.py +++ b/git/repo/fun.py @@ -1,21 +1,21 @@ """Package with general repository related functions""" +import codecs import os +import os.path as osp import stat from string import digits -from git.compat import xrange -from git.exc import WorkTreeRepositoryUnsupported -from git.objects import Object -from git.refs import SymbolicReference -from git.util import hex_to_bin, bin_to_hex, decygpath from gitdb.exc import ( BadObject, BadName, ) -import os.path as osp from git.cmd import Git - +from git.compat import xrange +from git.exc import WorkTreeRepositoryUnsupported +from git.objects import Object +from git.refs import SymbolicReference +from git.util import hex_to_bin, bin_to_hex, decygpath __all__ = ('rev_parse', 'is_git_dir', 'touch', 'find_submodule_git_dir', 'name_to_object', 'short_to_long', 'deref_tag', 'to_commit', 'find_worktree_git_dir') @@ -58,7 +58,7 @@ def find_worktree_git_dir(dotgit): return None try: - lines = open(dotgit, 'r', encoding="utf-8").readlines() + lines = codecs.open(dotgit, 'r', encoding="utf-8").readlines() for key, value in [line.strip().split(': ') for line in lines]: if key == 'gitdir': return value @@ -73,7 +73,7 @@ def find_submodule_git_dir(d): return d try: - with open(d, encoding="utf-8") as fp: + with codecs.open(d, encoding="utf-8") as fp: content = fp.read().rstrip() except (IOError, OSError): # it's probably not a file From 27fcca11fb1191431b98a724b6923c51767df279 Mon Sep 17 00:00:00 2001 From: wangweichen Date: Thu, 13 Jul 2017 14:57:54 +0800 Subject: [PATCH 3/3] fix codecs.open can't have text and binary mode at once --- git/refs/symbolic.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/git/refs/symbolic.py b/git/refs/symbolic.py index 8fb630959..b1f17661e 100644 --- a/git/refs/symbolic.py +++ b/git/refs/symbolic.py @@ -76,7 +76,7 @@ def abspath(self): @classmethod def _get_packed_refs_path(cls, repo): try: - commondir = codecs.open(osp.join(repo.git_dir, 'commondir'), 'rt', encoding="utf-8").readlines()[0].strip() + commondir = codecs.open(osp.join(repo.git_dir, 'commondir'), 'r', encoding="utf-8").readlines()[0].strip() except (OSError, IOError): commondir = '.' repodir = osp.join(repo.git_dir, commondir) @@ -87,7 +87,7 @@ def _iter_packed_refs(cls, repo): """Returns an iterator yielding pairs of sha1/path pairs (as bytes) for the corresponding refs. :note: The packed refs file will be kept open as long as we iterate""" try: - with codecs.open(cls._get_packed_refs_path(repo), 'rt', encoding="utf-8") as fp: + with codecs.open(cls._get_packed_refs_path(repo), 'r', encoding="utf-8") as fp: for line in fp: line = line.strip() if not line: @@ -133,7 +133,7 @@ def _get_ref_info_helper(cls, repo, repodir, ref_path): point to, or None""" tokens = None try: - with codecs.open(osp.join(repodir, ref_path), 'rt', encoding="utf-8") as fp: + with codecs.open(osp.join(repodir, ref_path), 'r', encoding="utf-8") as fp: value = fp.read().rstrip() # Don't only split on spaces, but on whitespace, which allows to parse lines like # 60b64ef992065e2600bfef6187a97f92398a9144 branch 'master' of git-server:/path/to/repo @@ -173,7 +173,7 @@ def _get_ref_info(cls, repo, ref_path): return cls._get_ref_info_helper(repo, repo.git_dir, ref_path) except ValueError: try: - commondir = codecs.open(osp.join(repo.git_dir, 'commondir'), 'rt', encoding="utf-8").readlines()[0].strip() + commondir = codecs.open(osp.join(repo.git_dir, 'commondir'), 'r', encoding="utf-8").readlines()[0].strip() except (OSError, IOError): commondir = '.' pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy