Fix git parser assuming header presence and order.

Review Request #7263 — Created April 29, 2015 and submitted

Information

Review Board
release-2.0.x
0bcd91a...

Reviewers

The git diff format does not specify the order of extended headers or
that certain headers must appear with others. We were assuming some
ordering and header dependencies that while true in the git case are
not true for git diffs generated by mercurial.

We now parse all of the headers at once ignoring order and then act on
them after the header parsing is complete. The GitDiffParser should
now properly parse a mercurial generated git diff.

Unit tests pass, hg git diff parses.

Description From Last Updated

Assuming these aren't constants, they should be defined in __init__.

chipx86chipx86

]) on the next line, and trailing comma on the string, so it's easier to extend down the road.

chipx86chipx86

Let's pull self.lines[linenum] out into a local line variable, to avoid repeated lookups.

chipx86chipx86

Col: 9 E303 too many blank lines (2)

reviewbotreviewbot
reviewbot
  1. Tool: Pyflakes
    Processed Files:
        reviewboard/diffviewer/parser.py
        reviewboard/scmtools/git.py
    
    
    
    Tool: PEP8 Style Checker
    Processed Files:
        reviewboard/diffviewer/parser.py
        reviewboard/scmtools/git.py
    
    
  2. reviewboard/scmtools/git.py (Diff revision 1)
     
     
    Show all issues
    Col: 9
     E303 too many blank lines (2)
    
  3. 
      
brennie
  1. This looks great! I'm happy once Review Bot is happy.

  2. 
      
chipx86
  1. 
      
  2. reviewboard/diffviewer/parser.py (Diff revision 1)
     
     
     
    Show all issues

    Assuming these aren't constants, they should be defined in __init__.

  3. reviewboard/scmtools/git.py (Diff revision 1)
     
     
    Show all issues

    ]) on the next line, and trailing comma on the string, so it's easier to extend down the road.

  4. reviewboard/scmtools/git.py (Diff revision 1)
     
     
     
     
    Show all issues

    Let's pull self.lines[linenum] out into a local line variable, to avoid repeated lookups.

  5. 
      
SM
reviewbot
  1. Tool: PEP8 Style Checker
    Processed Files:
        reviewboard/diffviewer/parser.py
        reviewboard/scmtools/git.py
    
    
    
    Tool: Pyflakes
    Processed Files:
        reviewboard/diffviewer/parser.py
        reviewboard/scmtools/git.py
    
    
  2. 
      
chipx86
  1. Ship It!
  2. 
      
SM
reviewbot
  1. Tool: PEP8 Style Checker
    Processed Files:
        reviewboard/diffviewer/parser.py
        reviewboard/scmtools/git.py
    
    
    
    Tool: Pyflakes
    Processed Files:
        reviewboard/diffviewer/parser.py
        reviewboard/scmtools/git.py
    
    
  2. 
      
SM
Review request changed
Status:
Completed
Change Summary:
Pushed to release-2.0.x (fe4f5ac)