shelve: Problem with files containing special characters at different OS working at the same repository
Created originally on Bitbucket by r_giera
Committing files with special characters, like ü, ä, ö in German, causes to problems between Windows and Linux. TortoiseHG from the opposite OS shows these files as removed and added again. The OS from which the file have been comitted shows no modifications.
Committing these automatically preparated changes (in this case of reporting: Win7) (there are no real modifications at the files), causes to the error [Errno 84] "Ungültiges oder unvollständiges Multi-Byte- oder Wide-Zeichen: ''" in the opposite OS (in this case of reporting: Ubuntu 11) at the same local repository located at FAT32. The error is displayed in the row of the working directory.
Then trying to perform a shelf command causes to the following bug report:
#!python
** Mercurial version (2.4.2). TortoiseHg version (2.6.2)
** Command: log
** CWD: /home/rgiera
** Encoding: UTF-8
** Extensions loaded: bugzilla
** Python version: 2.7.2+ (default, Jul 20 2012, 22:15:08) [GCC 4.6.1]
** Qt-4.7.3 PyQt-4.8.5
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/tortoisehg/hgqt/workbench.py", line 859, in forwarder
getattr(w, name)(*params, **namedparams)
File "/usr/lib/python2.7/dist-packages/tortoisehg/hgqt/repowidget.py", line 696, in shelve
dlg = shelve.ShelveDialog(self.repo, self)
File "/usr/lib/python2.7/dist-packages/tortoisehg/hgqt/shelve.py", line 192, in __init__
self.refreshCombos()
File "/usr/lib/python2.7/dist-packages/tortoisehg/hgqt/shelve.py", line 421, in refreshCombos
self.comboAChanged(idxa)
File "/usr/lib/python2.7/dist-packages/tortoisehg/hgqt/shelve.py", line 440, in comboAChanged
self.browsea.setContext(self.repo.changectx(rev))
File "/usr/lib/python2.7/dist-packages/tortoisehg/hgqt/chunks.py", line 448, in setContext
empty = len(ctx.files()) == 0
File "/usr/lib/python2.7/dist-packages/mercurial/context.py", line 908, in files
return sorted(self._status[0] + self._status[1] + self._status[2])
File "/usr/lib/python2.7/dist-packages/mercurial/util.py", line 246, in __get__
result = self.func(obj)
File "/usr/lib/python2.7/dist-packages/mercurial/context.py", line 866, in _status
return self._repo.status()[:4]
File "/usr/lib/python2.7/dist-packages/mercurial/localrepo.py", line 1573, in status
listclean, listunknown)
File "/usr/lib/python2.7/dist-packages/mercurial/dirstate.py", line 755, in status
listignored).iteritems():
File "/usr/lib/python2.7/dist-packages/mercurial/dirstate.py", line 701, in walk
for nf, st in zip(visit, util.statfiles([join(i) for i in visit])):
File "/usr/lib/python2.7/dist-packages/mercurial/posix.py", line 360, in statfiles
st = lstat(nf)
OSError: [Errno 84] Ungültiges oder unvollständiges Multi-Byte- oder Wide-Zeichen: '/media/Data HDD2/SIB/Development/workspaces_eclipse/wsp_sib_hg/raptor/data/KBs/VW/Media/Doc/VW_Golf_2009_5K1_Aus-&Einbau_Fensterf\xfchrung.pdf'
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/tortoisehg/hgqt/chunks.py", line 144, in timerEvent
ctx = self.ctx
AttributeError: 'ChunksWidget' object has no attribute 'ctx'
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/tortoisehg/hgqt/chunks.py", line 144, in timerEvent
ctx = self.ctx
AttributeError: 'ChunksWidget' object has no attribute 'ctx'
Then clicking OK causes to the next bug report, which occurs again and again on clicking OK:
#!python
** Mercurial version (2.4.2). TortoiseHg version (2.6.2)
** Command: log
** CWD: /home/rgiera
** Encoding: UTF-8
** Extensions loaded: bugzilla
** Python version: 2.7.2+ (default, Jul 20 2012, 22:15:08) [GCC 4.6.1]
** Qt-4.7.3 PyQt-4.8.5
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/tortoisehg/hgqt/chunks.py", line 144, in timerEvent
ctx = self.ctx
AttributeError: 'ChunksWidget' object has no attribute 'ctx'
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/tortoisehg/hgqt/chunks.py", line 144, in timerEvent
ctx = self.ctx
AttributeError: 'ChunksWidget' object has no attribute 'ctx'
Only Quit helps to terminate the loop.