[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