mercurial/patch.py
changeset 23661 dbd60f8d88d5
parent 23434 60300a4c0ae5
child 23662 bc7d90c966d2
equal deleted inserted replaced
23660:1ec6dbb9b216 23661:dbd60f8d88d5
  1792     copyto = dict([(v, k) for k, v in copy.items()])
  1792     copyto = dict([(v, k) for k, v in copy.items()])
  1793 
  1793 
  1794     if opts.git:
  1794     if opts.git:
  1795         revs = None
  1795         revs = None
  1796 
  1796 
       
  1797     modifiedset, addedset, removedset = set(modified), set(added), set(removed)
  1797     for f in sorted(modified + added + removed):
  1798     for f in sorted(modified + added + removed):
  1798         to = None
  1799         to = None
  1799         tn = None
  1800         tn = None
  1800         dodiff = True
  1801         dodiff = True
  1801         header = []
  1802         header = []
  1802         if f in man1:
  1803         if f in man1:
  1803             to = getfilectx(f, ctx1).data()
  1804             to = getfilectx(f, ctx1).data()
  1804         if f not in removed:
  1805         if f not in removedset:
  1805             tn = getfilectx(f, ctx2).data()
  1806             tn = getfilectx(f, ctx2).data()
  1806         a, b = f, f
  1807         a, b = f, f
  1807         if opts.git or losedatafn:
  1808         if opts.git or losedatafn:
  1808             if f in added or (f in modified and to is None):
  1809             if f in addedset or (f in modifiedset and to is None):
  1809                 mode = gitmode[ctx2.flags(f)]
  1810                 mode = gitmode[ctx2.flags(f)]
  1810                 if f in copy or f in copyto:
  1811                 if f in copy or f in copyto:
  1811                     if opts.git:
  1812                     if opts.git:
  1812                         if f in copy:
  1813                         if f in copy:
  1813                             a = copy[f]
  1814                             a = copy[f]
  1814                         else:
  1815                         else:
  1815                             a = copyto[f]
  1816                             a = copyto[f]
  1816                         omode = gitmode[man1.flags(a)]
  1817                         omode = gitmode[man1.flags(a)]
  1817                         addmodehdr(header, omode, mode)
  1818                         addmodehdr(header, omode, mode)
  1818                         if a in removed and a not in gone:
  1819                         if a in removedset and a not in gone:
  1819                             op = 'rename'
  1820                             op = 'rename'
  1820                             gone.add(a)
  1821                             gone.add(a)
  1821                         else:
  1822                         else:
  1822                             op = 'copy'
  1823                             op = 'copy'
  1823                         header.append('%s from %s\n' % (op, join(a)))
  1824                         header.append('%s from %s\n' % (op, join(a)))
  1839                     else:
  1840                     else:
  1840                         losedatafn(f)
  1841                         losedatafn(f)
  1841                 if not opts.git and not tn:
  1842                 if not opts.git and not tn:
  1842                     # regular diffs cannot represent new empty file
  1843                     # regular diffs cannot represent new empty file
  1843                     losedatafn(f)
  1844                     losedatafn(f)
  1844             elif f in removed or (f in modified and tn is None):
  1845             elif f in removedset or (f in modifiedset and tn is None):
  1845                 if opts.git:
  1846                 if opts.git:
  1846                     # have we already reported a copy above?
  1847                     # have we already reported a copy above?
  1847                     if ((f in copy and copy[f] in added
  1848                     if ((f in copy and copy[f] in addedset
  1848                          and copyto[copy[f]] == f) or
  1849                          and copyto[copy[f]] == f) or
  1849                         (f in copyto and copyto[f] in added
  1850                         (f in copyto and copyto[f] in addedset
  1850                          and copy[copyto[f]] == f)):
  1851                          and copy[copyto[f]] == f)):
  1851                         dodiff = False
  1852                         dodiff = False
  1852                     else:
  1853                     else:
  1853                         header.append('deleted file mode %s\n' %
  1854                         header.append('deleted file mode %s\n' %
  1854                                       gitmode[man1.flags(f)])
  1855                                       gitmode[man1.flags(f)])