[PATCH 1 of 8] diff: Move b85diff to mdiff module
Kevin Bullock
kbullock+mercurial at ringworld.org
Wed Nov 14 12:10:00 CST 2012
On Nov 13, 2012, at 4:25 PM, Guillermo Pérez wrote:
> # HG changeset patch
> # User Guillermo Pérez <bisho at fb.com>
> # Date 1352239445 28800
> # Node ID ea3d7cd2c934251e3e70870de647c1aea3640c9a
> # Parent fb14a5dcdc62987512820531fe60719d650491b6
> diff: Move b85diff to mdiff module
>
> b85diff generates a binary diff, so we move this code to mdiff module
> along with unidiff for text diffs. All diffing mechanisms will be in the
> same place.
>
> In an upcoming patch we will remove the responsability to print the
> index header from the b85diff and move it back to patch, since its
> a patch metadata header, not part of the diff generation.
>
> diff --git a/mercurial/mdiff.py b/mercurial/mdiff.py
> [...]
> diff --git a/mercurial/patch.py b/mercurial/patch.py
> --- a/mercurial/patch.py
> +++ b/mercurial/patch.py
> @@ -10,7 +10,7 @@
> import tempfile, zlib, shutil
>
> from i18n import _
> -from node import hex, nullid, short
> +from node import hex, short
> import base85, mdiff, scmutil, util, diffhelpers, copies, encoding, error
Is base85 still needed here after moving the function out?
pacem in terris / мир / शान्ति / سَلاَم / 平和
Kevin R. Bullock
> import context
>
> @@ -1514,44 +1514,6 @@
> finally:
> fp.close()
>
> -def b85diff(to, tn):
> - '''print base85-encoded binary diff'''
> - def gitindex(text):
> - if not text:
> - return hex(nullid)
> - l = len(text)
> - s = util.sha1('blob %d\0' % l)
> - s.update(text)
> - return s.hexdigest()
> -
> - def fmtline(line):
> - l = len(line)
> - if l <= 26:
> - l = chr(ord('A') + l - 1)
> - else:
> - l = chr(l - 26 + ord('a') - 1)
> - return '%c%s\n' % (l, base85.b85encode(line, True))
> -
> - def chunk(text, csize=52):
> - l = len(text)
> - i = 0
> - while i < l:
> - yield text[i:i + csize]
> - i += csize
> -
> - tohash = gitindex(to)
> - tnhash = gitindex(tn)
> - if tohash == tnhash:
> - return ""
> -
> - # TODO: deltas
> - ret = ['index %s..%s\nGIT binary patch\nliteral %s\n' %
> - (tohash, tnhash, len(tn))]
> - for l in chunk(zlib.compress(tn)):
> - ret.append(fmtline(l))
> - ret.append('\n')
> - return ''.join(ret)
> -
> class GitDiffRequired(Exception):
> pass
>
> @@ -1789,7 +1751,7 @@
>
> if dodiff:
> if dodiff == 'binary':
> - text = b85diff(to, tn)
> + text = mdiff.b85diff(to, tn)
> else:
> text = mdiff.unidiff(to, date1,
> # ctx2 date may be dynamic
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel
More information about the Mercurial-devel
mailing list