1527 yield ''.join(header) |
1527 yield ''.join(header) |
1528 if text: |
1528 if text: |
1529 yield text |
1529 yield text |
1530 |
1530 |
1531 def diffstatdata(lines): |
1531 def diffstatdata(lines): |
|
1532 diffre = re.compile('^diff .*-r [a-z0-9]+\s(.*)$') |
|
1533 |
1532 filename, adds, removes = None, 0, 0 |
1534 filename, adds, removes = None, 0, 0 |
1533 for line in lines: |
1535 for line in lines: |
1534 if line.startswith('diff'): |
1536 if line.startswith('diff'): |
1535 if filename: |
1537 if filename: |
1536 isbinary = adds == 0 and removes == 0 |
1538 isbinary = adds == 0 and removes == 0 |
1537 yield (filename, adds, removes, isbinary) |
1539 yield (filename, adds, removes, isbinary) |
1538 # set numbers to 0 anyway when starting new file |
1540 # set numbers to 0 anyway when starting new file |
1539 adds, removes = 0, 0 |
1541 adds, removes = 0, 0 |
1540 if line.startswith('diff --git'): |
1542 if line.startswith('diff --git'): |
1541 filename = gitre.search(line).group(1) |
1543 filename = gitre.search(line).group(1) |
1542 else: |
1544 elif line.startswith('diff -r'): |
1543 # format: "diff -r ... -r ... filename" |
1545 # format: "diff -r ... -r ... filename" |
1544 filename = line.split(None, 5)[-1] |
1546 filename = diffre.search(line).group(1) |
1545 elif line.startswith('+') and not line.startswith('+++'): |
1547 elif line.startswith('+') and not line.startswith('+++'): |
1546 adds += 1 |
1548 adds += 1 |
1547 elif line.startswith('-') and not line.startswith('---'): |
1549 elif line.startswith('-') and not line.startswith('---'): |
1548 removes += 1 |
1550 removes += 1 |
1549 if filename: |
1551 if filename: |