remote-bzr: fix utf-8 support for fetching
The previous patches didn't deal with all the scenarios. Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
0290bf1250
commit
5ff4fc649e
@ -183,21 +183,24 @@ def get_filechanges(cur, prev):
|
|||||||
|
|
||||||
changes = cur.changes_from(prev)
|
changes = cur.changes_from(prev)
|
||||||
|
|
||||||
|
def u(s):
|
||||||
|
return s.encode('utf-8')
|
||||||
|
|
||||||
for path, fid, kind in changes.added:
|
for path, fid, kind in changes.added:
|
||||||
modified[path] = fid
|
modified[u(path)] = fid
|
||||||
for path, fid, kind in changes.removed:
|
for path, fid, kind in changes.removed:
|
||||||
removed[path] = None
|
removed[u(path)] = None
|
||||||
for path, fid, kind, mod, _ in changes.modified:
|
for path, fid, kind, mod, _ in changes.modified:
|
||||||
modified[path] = fid
|
modified[u(path)] = fid
|
||||||
for oldpath, newpath, fid, kind, mod, _ in changes.renamed:
|
for oldpath, newpath, fid, kind, mod, _ in changes.renamed:
|
||||||
removed[oldpath] = None
|
removed[u(oldpath)] = None
|
||||||
if kind == 'directory':
|
if kind == 'directory':
|
||||||
lst = cur.list_files(from_dir=newpath, recursive=True)
|
lst = cur.list_files(from_dir=newpath, recursive=True)
|
||||||
for path, file_class, kind, fid, entry in lst:
|
for path, file_class, kind, fid, entry in lst:
|
||||||
if kind != 'directory':
|
if kind != 'directory':
|
||||||
modified[newpath + '/' + path] = fid
|
modified[u(newpath + '/' + path)] = fid
|
||||||
else:
|
else:
|
||||||
modified[newpath] = fid
|
modified[u(newpath)] = fid
|
||||||
|
|
||||||
return modified, removed
|
return modified, removed
|
||||||
|
|
||||||
@ -223,7 +226,7 @@ def export_files(tree, files):
|
|||||||
# is the blog already exported?
|
# is the blog already exported?
|
||||||
if h in filenodes:
|
if h in filenodes:
|
||||||
mark = filenodes[h]
|
mark = filenodes[h]
|
||||||
final.append((mode, mark, path.encode('utf-8')))
|
final.append((mode, mark, path))
|
||||||
continue
|
continue
|
||||||
|
|
||||||
d = tree.get_file_text(fid)
|
d = tree.get_file_text(fid)
|
||||||
@ -240,7 +243,7 @@ def export_files(tree, files):
|
|||||||
print "data %d" % len(d)
|
print "data %d" % len(d)
|
||||||
print d
|
print d
|
||||||
|
|
||||||
final.append((mode, mark, path.encode('utf-8')))
|
final.append((mode, mark, path))
|
||||||
|
|
||||||
return final
|
return final
|
||||||
|
|
||||||
|
@ -177,6 +177,13 @@ test_expect_success 'fetch utf-8 filenames' '
|
|||||||
|
|
||||||
echo test >> "áéíóú" &&
|
echo test >> "áéíóú" &&
|
||||||
bzr add "áéíóú" &&
|
bzr add "áéíóú" &&
|
||||||
|
echo test >> "îø∫∆" &&
|
||||||
|
bzr add "îø∫∆" &&
|
||||||
|
bzr commit -m utf-8 &&
|
||||||
|
echo test >> "áéíóú" &&
|
||||||
|
bzr commit -m utf-8 &&
|
||||||
|
bzr rm "îø∫∆" &&
|
||||||
|
bzr mv "áéíóú" "åß∂" &&
|
||||||
bzr commit -m utf-8
|
bzr commit -m utf-8
|
||||||
) &&
|
) &&
|
||||||
|
|
||||||
@ -186,7 +193,7 @@ test_expect_success 'fetch utf-8 filenames' '
|
|||||||
git ls-files > ../actual
|
git ls-files > ../actual
|
||||||
) &&
|
) &&
|
||||||
|
|
||||||
echo "\"\\303\\241\\303\\251\\303\\255\\303\\263\\303\\272\"" > expected &&
|
echo "\"\\303\\245\\303\\237\\342\\210\\202\"" > expected &&
|
||||||
test_cmp expected actual
|
test_cmp expected actual
|
||||||
'
|
'
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user