[PATCH 4 of 4] hg: make --binary option for Git diffs default to off

Alexander Fomin afomin at fb.com
Wed Apr 5 18:04:58 EDT 2017


On 05/04/2017, 07:37, "Ryan McElroy" <rm at fb.com> wrote:
> 
> On 4/4/17 11:21 PM, Alexander Fomin wrote:
> > # HG changeset patch
> > # User Alexander Fomin <afomin at fb.com>
> > # Date 1491342655 25200
> > #      Tue Apr 04 14:50:55 2017 -0700
> > # Node ID 76f6cd23643c9816a688a1e12900a6856c5fabf6
> > # Parent  373acf7da1a621607a1cc062b96ad67a42a7e016
> > hg: make --binary option for Git diffs default to off
> 
> This patch needs a (BC) appended to its title since it changes backwards
> compatibility.
Ah, sorry for that. Will be fixed.
> 
> I'd like the community to weigh in on this patch once we have a
> land-ready version, so I'll wait for the next version before looping in
> more people to comment/review.
> 
> When you resend the series, remember to add a '--flag v2' to the `hg
> email` command so that people know it's a follow-up to a previously-send
> series.
> 
> >
> > This patch makes --binary option default to off in order to avoid
> > generating binary diffs in Git mode unless explicitly requested by a
> > user (issue5510).
> 
> This isn't exactly issue5510. I'd suggest saying that this is "a
> follow-up as discussed in issue5510", or something like that.
> 
Yep, you’re right.
> >
> > diff --git a/hgext/mq.py b/hgext/mq.py
> > --- a/hgext/mq.py
> > +++ b/hgext/mq.py
> > @@ -513,6 +513,7 @@ class queue(object):
> >           diffopts = patchmod.diffopts(self.ui, opts)
> >           if self.gitmode == 'auto':
> >               diffopts.upgrade = True
> > +            diffopts.nobinary = False
> >           elif self.gitmode == 'keep':
> >               pass
> >           elif self.gitmode in ('yes', 'no'):
> > diff --git a/hgext/transplant.py b/hgext/transplant.py
> > --- a/hgext/transplant.py
> > +++ b/hgext/transplant.py
> > @@ -143,6 +143,7 @@ class transplanter(object):
> >           pulls = []
> >           diffopts = patch.difffeatureopts(self.ui, opts)
> >           diffopts.git = True
> > +        diffopts.nobinary = False
> >
> >           lock = tr = None
> >           try:
> > diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py
> > --- a/mercurial/cmdutil.py
> > +++ b/mercurial/cmdutil.py
> > @@ -162,6 +162,7 @@ def dorecord(ui, repo, commitfunc, cmdsu
> >           diffopts = patch.difffeatureopts(ui, opts=opts, whitespace=True)
> >           diffopts.nodates = True
> >           diffopts.git = True
> > +        diffopts.nobinary = False
> >           diffopts.showfunc = True
> >           originaldiff = patch.diff(repo, changes=status, opts=diffopts)
> >           originalchunks = patch.parsepatch(originaldiff)
> > diff --git a/mercurial/mdiff.py b/mercurial/mdiff.py
> > --- a/mercurial/mdiff.py
> > +++ b/mercurial/mdiff.py
> > @@ -50,7 +50,7 @@ class diffopts(object):
> >           'showfunc': False,
> >           'git': False,
> >           'nodates': False,
> > -        'nobinary': False,
> > +        'nobinary': True,
> >           'noprefix': False,
> >           'index': 0,
> >           'ignorews': False,
> > diff --git a/tests/autodiff.py b/tests/autodiff.py
> > --- a/tests/autodiff.py
> > +++ b/tests/autodiff.py
> > @@ -26,6 +26,7 @@ def autodiff(ui, repo, *pats, **opts):
> >       elif git == 'auto':
> >           diffopts.git = False
> >           diffopts.upgrade = True
> > +        diffopts.nobinary = False
> >       elif git == 'warn':
> >           diffopts.git = False
> >           diffopts.upgrade = True
> > diff --git a/tests/test-diff-binary-file.t b/tests/test-diff-binary-file.t
> > --- a/tests/test-diff-binary-file.t
> > +++ b/tests/test-diff-binary-file.t
> > @@ -19,7 +19,7 @@
> >
> >     $ hg diff --nodates -r 0 -r 2
> >
> > -  $ hg diff --git -r 0 -r 1
> > +  $ hg diff --git --binary -r 0 -r 1
> >     diff --git a/binfile.bin b/binfile.bin
> >     index 37ba3d1c6f17137d9c5f5776fa040caf5fe73ff9..58dc31a9e2f40f74ff3b45903f7d620b8e5b7356
> >     GIT binary patch
> > @@ -64,7 +64,7 @@
> >
> >
> >
> > -  $ hg diff --git -r 2 -r 3
> > +  $ hg diff --git --binary -r 2 -r 3
> >     diff --git a/binfile.bin b/nonbinfile
> >     copy from binfile.bin
> >     copy to nonbinfile
> > diff --git a/tests/test-git-export.t b/tests/test-git-export.t
> > --- a/tests/test-git-export.t
> > +++ b/tests/test-git-export.t
> > @@ -342,7 +342,7 @@ Binary diff:
> >
> >     $ cp "$TESTDIR/binfile.bin" .
> >     $ hg add binfile.bin
> > -  $ hg diff --git > b.diff
> > +  $ hg diff --git --binary > b.diff
> >     $ cat b.diff
> >     diff --git a/binfile.bin b/binfile.bin
> >     new file mode 100644
> > diff --git a/tests/test-import-eol.t b/tests/test-import-eol.t
> > --- a/tests/test-import-eol.t
> > +++ b/tests/test-import-eol.t
> > @@ -131,7 +131,7 @@ Test --eol and binary patches
> >     $ hg ci -Am addb
> >     adding b
> >     $ $PYTHON -c 'file("b", "wb").write("a\x00\nc\r\nd")'
> > -  $ hg diff --git > bin.diff
> > +  $ hg diff --git --binary > bin.diff
> >     $ hg revert --no-backup b
> >
> >   binary patch with --eol
> >
> 
> Code/test changes look good to me. Thanks! Looking forward to a
> finalized second version that we can run with :-)



More information about the Mercurial-devel mailing list