Convert integer marks to string in fast-export
Jelmer Vernooij
jelmer at jelmer.uk
Sat Jul 4 16:41:46 UTC 2020
Hi Björn,
Thanks for the bug report - I've committed a fix to the 3.1 branch
that should address this issue; the fix is slightly different from
yours in that it makes the format of marks dicts consistent across the
fastimport plugin.
Cheers,
Jelmer
On Tue, Jun 30, 2020 at 06:15:44PM +0700, Björn Lindström wrote:
> Hello,
>
> when using `fast-export --export-marks` I would get an error like this
>
> ```
> bkhl at toolbox:.../foo/custom$ brz fast-export --export-marks=../marks.bzr
> ../bzr/trunk/ > /dev/null
> 16:59:32 Calculating the revisions to include ...
> 16:59:32 Starting export of 1108 revisions ...
> 16:59:34 1000/1108 commits exported at 32153/minute
> brz: ERROR: AttributeError: 'int' object has no attribute 'lstrip'
>
> Traceback (most recent call last):
> […]
> File
> "/usr/lib64/python3.8/site-packages/breezy/plugins/fastimport/exporter.py",
> line 306, in _save_marks
> marks_file.export_marks(self.export_marks_file, revision_ids)
> File
> "/usr/lib64/python3.8/site-packages/breezy/plugins/fastimport/marks_file.py",
> line 83, in export_marks
> f.write(':%s %s\n' % (mark.lstrip(b':').decode('utf-8'),
> AttributeError: 'int' object has no attribute 'lstrip'
>
> brz 3.0.2 on python 3.8.2rc2 (Linux-5.6.19-300.fc32.x86_64-x86_64-with-
> glibc2.2.5)
> arguments: ['/usr/bin/brz', 'fast-export', '--export-marks=../marks.bzr',
> ```
>
> This patch converts incoming `bytes` or `int` objects to strings
> appropriately, as far as I can tell:
>
>
> === modified file 'breezy/plugins/fastimport/marks_file.py'
> --- old/breezy/plugins/fastimport/marks_file.py 2020-06-01 23:15:18 +0000
> +++ new/breezy/plugins/fastimport/marks_file.py 2020-06-30 10:28:48 +0000
> @@ -76,7 +76,11 @@
> try:
> # Write the revision info
> for mark in revision_ids:
> - f.write(':%s %s\n' % (mark.lstrip(b':').decode('utf-8'),
> + if isinstance(mark, int):
> + mark_name = str(mark)
> + elif isinstance(mark, bytes):
> + mark_name = mark.lstrip(b':').decode('utf-8')
> + f.write(':%s %s\n' % (mark_name,
> revision_ids[mark].decode('utf-8')))
> finally:
> f.close()
>
>
> Not sure if this is necessary though. Can we maybe just assume the marks are
> always going to be `int`s?
>
> I first made a GitHub "PR" for this over here
> https://github.com/breezy-team/breezy/pull/117, before being told on the IRC
> chat that it would be more appropriate to send a patch tot he mailing list.
>
> Best wishes,
> Björn
>
>
>
--
Jelmer Vernooij <jelmer at jelmer.uk>
PGP Key: https://www.jelmer.uk/D729A457.asc
More information about the bazaar
mailing list