mercurial/patch.py
changeset 14400 cd1ca2556cac
parent 14392 bb5cbc16349e
child 14401 7bb7be1c1385
equal deleted inserted replaced
14399:71938479eff9 14400:cd1ca2556cac
  1682                 yield text
  1682                 yield text
  1683 
  1683 
  1684 def diffstatdata(lines):
  1684 def diffstatdata(lines):
  1685     diffre = re.compile('^diff .*-r [a-z0-9]+\s(.*)$')
  1685     diffre = re.compile('^diff .*-r [a-z0-9]+\s(.*)$')
  1686 
  1686 
       
  1687     results = []
  1687     filename, adds, removes = None, 0, 0
  1688     filename, adds, removes = None, 0, 0
       
  1689 
       
  1690     def addresult():
       
  1691         if filename:
       
  1692             isbinary = adds == 0 and removes == 0
       
  1693             results.append((filename, adds, removes, isbinary))
       
  1694 
  1688     for line in lines:
  1695     for line in lines:
  1689         if line.startswith('diff'):
  1696         if line.startswith('diff'):
  1690             if filename:
  1697             addresult()
  1691                 isbinary = adds == 0 and removes == 0
       
  1692                 yield (filename, adds, removes, isbinary)
       
  1693             # set numbers to 0 anyway when starting new file
  1698             # set numbers to 0 anyway when starting new file
  1694             adds, removes = 0, 0
  1699             adds, removes = 0, 0
  1695             if line.startswith('diff --git'):
  1700             if line.startswith('diff --git'):
  1696                 filename = gitre.search(line).group(1)
  1701                 filename = gitre.search(line).group(1)
  1697             elif line.startswith('diff -r'):
  1702             elif line.startswith('diff -r'):
  1699                 filename = diffre.search(line).group(1)
  1704                 filename = diffre.search(line).group(1)
  1700         elif line.startswith('+') and not line.startswith('+++'):
  1705         elif line.startswith('+') and not line.startswith('+++'):
  1701             adds += 1
  1706             adds += 1
  1702         elif line.startswith('-') and not line.startswith('---'):
  1707         elif line.startswith('-') and not line.startswith('---'):
  1703             removes += 1
  1708             removes += 1
  1704     if filename:
  1709     addresult()
  1705         isbinary = adds == 0 and removes == 0
  1710     return results
  1706         yield (filename, adds, removes, isbinary)
       
  1707 
  1711 
  1708 def diffstat(lines, width=80, git=False):
  1712 def diffstat(lines, width=80, git=False):
  1709     output = []
  1713     output = []
  1710     stats = list(diffstatdata(lines))
  1714     stats = list(diffstatdata(lines))
  1711 
  1715