mercurial/patch.py
changeset 23754 ed645dc672e5
parent 23753 e30c6aa6f2a2
child 23924 0db6810e84e8
equal deleted inserted replaced
23753:e30c6aa6f2a2 23754:ed645dc672e5
  1796             addedset.add(f)
  1796             addedset.add(f)
  1797             modifiedset.remove(f)
  1797             modifiedset.remove(f)
  1798     for f in sorted(modified + added + removed):
  1798     for f in sorted(modified + added + removed):
  1799         to = None
  1799         to = None
  1800         tn = None
  1800         tn = None
  1801         dodiff = True
  1801         binarydiff = False
  1802         header = []
  1802         header = []
  1803         if f not in addedset:
  1803         if f not in addedset:
  1804             to = getfilectx(f, ctx1).data()
  1804             to = getfilectx(f, ctx1).data()
  1805         if f not in removedset:
  1805         if f not in removedset:
  1806             tn = getfilectx(f, ctx2).data()
  1806             tn = getfilectx(f, ctx2).data()
  1834                 # In theory, if tn was copied or renamed we should check
  1834                 # In theory, if tn was copied or renamed we should check
  1835                 # if the source is binary too but the copy record already
  1835                 # if the source is binary too but the copy record already
  1836                 # forces git mode.
  1836                 # forces git mode.
  1837                 if util.binary(tn):
  1837                 if util.binary(tn):
  1838                     if opts.git:
  1838                     if opts.git:
  1839                         dodiff = 'binary'
  1839                         binarydiff = True
  1840                     else:
  1840                     else:
  1841                         losedatafn(f)
  1841                         losedatafn(f)
  1842                 if not opts.git and not tn:
  1842                 if not opts.git and not tn:
  1843                     # regular diffs cannot represent new empty file
  1843                     # regular diffs cannot represent new empty file
  1844                     losedatafn(f)
  1844                     losedatafn(f)
  1852                         continue
  1852                         continue
  1853                     else:
  1853                     else:
  1854                         header.append('deleted file mode %s\n' %
  1854                         header.append('deleted file mode %s\n' %
  1855                                       gitmode[ctx1.flags(f)])
  1855                                       gitmode[ctx1.flags(f)])
  1856                         if util.binary(to):
  1856                         if util.binary(to):
  1857                             dodiff = 'binary'
  1857                             binarydiff = True
  1858                 elif not to or util.binary(to):
  1858                 elif not to or util.binary(to):
  1859                     # regular diffs cannot represent empty file deletion
  1859                     # regular diffs cannot represent empty file deletion
  1860                     losedatafn(f)
  1860                     losedatafn(f)
  1861             else:
  1861             else:
  1862                 oflag = ctx1.flags(f)
  1862                 oflag = ctx1.flags(f)
  1863                 nflag = ctx2.flags(f)
  1863                 nflag = ctx2.flags(f)
  1864                 binary = util.binary(to) or util.binary(tn)
  1864                 binary = util.binary(to) or util.binary(tn)
  1865                 if opts.git:
  1865                 if opts.git:
  1866                     addmodehdr(header, gitmode[oflag], gitmode[nflag])
  1866                     addmodehdr(header, gitmode[oflag], gitmode[nflag])
  1867                     if binary:
  1867                     if binary:
  1868                         dodiff = 'binary'
  1868                         binarydiff = True
  1869                 elif binary or nflag != oflag:
  1869                 elif binary or nflag != oflag:
  1870                     losedatafn(f)
  1870                     losedatafn(f)
  1871 
  1871 
  1872         if opts.git or revs:
  1872         if opts.git or revs:
  1873             header.insert(0, diffline(join(a), join(b), revs))
  1873             header.insert(0, diffline(join(a), join(b), revs))
  1874         if dodiff == 'binary' and not opts.nobinary:
  1874         if binarydiff and not opts.nobinary:
  1875             text = mdiff.b85diff(to, tn)
  1875             text = mdiff.b85diff(to, tn)
  1876             if text and opts.git:
  1876             if text and opts.git:
  1877                 addindexmeta(header, gitindex(to), gitindex(tn))
  1877                 addindexmeta(header, gitindex(to), gitindex(tn))
  1878         else:
  1878         else:
  1879             text = mdiff.unidiff(to, date1,
  1879             text = mdiff.unidiff(to, date1,