Skip to content

Commit

Permalink
git_remote_helpers: fix input when running under Python 3
Browse files Browse the repository at this point in the history
Although 2to3 will fix most issues in Python 2 code to make it run under
Python 3, it does not handle the new strict separation between byte
strings and unicode strings.  There is one instance in
git_remote_helpers where we are caught by this, which is when reading
refs from "git for-each-ref".

Fix this by operating on the returned string as a byte string rather
than a unicode string.  As this method is currently only used internally
by the class this does not affect code anywhere else.

Note that we cannot use byte strings in the source as the 'b' prefix is
not supported before Python 2.7 so in order to maintain compatibility
with the maximum range of Python versions we use an explicit call to
encode().

Signed-off-by: John Keeping <john@keeping.me.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
John Keeping authored and Junio C Hamano committed Jan 21, 2013
1 parent a894ba1 commit 29cf0d3
Showing 1 changed file with 6 additions and 3 deletions.
9 changes: 6 additions & 3 deletions git_remote_helpers/git/importer.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,16 @@ def __init__(self, repo):

def get_refs(self, gitdir):
"""Returns a dictionary with refs.
Note that the keys in the returned dictionary are byte strings as
read from git.
"""
args = ["git", "--git-dir=" + gitdir, "for-each-ref", "refs/heads"]
lines = check_output(args).strip().split('\n')
lines = check_output(args).strip().split('\n'.encode('ascii'))
refs = {}
for line in lines:
value, name = line.split(' ')
name = name.strip('commit\t')
value, name = line.split(' '.encode('ascii'))
name = name.strip('commit\t'.encode('ascii'))
refs[name] = value
return refs

Expand Down

0 comments on commit 29cf0d3

Please sign in to comment.