Making it easy to write pre/post-commit hooks

Review Request #9236 — Created Sept. 29, 2017 and discarded

Information

RBTools
master

Reviewers

Applies the 0001-WIP-Repository-hooks-support.patch that Christian Hammond
created.

Adds the repo-hook command to make it easy to use pre and post commit hooks. The
supported repositories are Git, Mercurial and SVN.

Ran nosetests -v; all tests pass with patch applied.

Created unit tests for all functions.

Ran nosetests -v; all tests passed.

Description From Last Updated

F401 'json' imported but unused

reviewbotreviewbot

F401 'six.moves.urllib.request.urlopen' imported but unused

reviewbotreviewbot

F401 'rbtools.api.tests.MockResponse' imported but unused

reviewbotreviewbot

F401 'rbtools.clients.svn.SVNClient' imported but unused

reviewbotreviewbot

E265 block comment should start with '# '

reviewbotreviewbot

E265 block comment should start with '# '

reviewbotreviewbot

E265 block comment should start with '# '

reviewbotreviewbot

E265 block comment should start with '# '

reviewbotreviewbot

F811 redefinition of unused 'RepositoryInfo' from line 10

reviewbotreviewbot

F811 redefinition of unused 'SCMClient' from line 10

reviewbotreviewbot

F811 redefinition of unused 'PatchResult' from line 10

reviewbotreviewbot

E302 expected 2 blank lines, found 1

reviewbotreviewbot

F811 redefinition of unused 'PatchResult' from line 10

reviewbotreviewbot

F811 redefinition of unused 'RepositoryInfo' from line 10

reviewbotreviewbot

F811 redefinition of unused 'SCMClient' from line 10

reviewbotreviewbot

F401 'rbtools.hooks.common.get_review_request_id' imported but unused

reviewbotreviewbot

E302 expected 2 blank lines, found 1

reviewbotreviewbot

E127 continuation line over-indented for visual indent

reviewbotreviewbot

E128 continuation line under-indented for visual indent

reviewbotreviewbot

W391 blank line at end of file

reviewbotreviewbot

E226 missing whitespace around arithmetic operator

reviewbotreviewbot

E303 too many blank lines (2)

reviewbotreviewbot

Have you checked what happens when the commit message contains a colon+space separator (:)? The regex looks like it would …

bleblan2bleblan2

E226 missing whitespace around arithmetic operator

reviewbotreviewbot

E226 missing whitespace around arithmetic operator

reviewbotreviewbot

E127 continuation line over-indented for visual indent

reviewbotreviewbot

run_from_argv now returns the exit code, as opposed to calling sys.exit(exit_code). I'd consider adding what it returns to the function's …

NI nicho
Checks run (1 failed, 1 succeeded)
flake8 failed.
JSHint passed.

flake8

GR
Review request changed
Description:
~  

Applies the 0001-WIP-Repository-hooks-support.patch that Christian Hammond gave me as a skeleton to start with. No other changes have been made yet, as I'm still going through the code.

  ~

Applies the 0001-WIP-Repository-hooks-support.patch that Christian Hammond gave

  + me as a skeleton to start with. No other changes have been made yet, as I'm
  + still going through the code.

  +
  +

Oct 1 - 8

  + Fixed common.py to make the old hook method work so I could test it and learn
  + how it works. Found the common.py fix in https://reviews.reviewboard.org/r/9198/
  + Started working through repo_hook.py and learned that the code Christian Hammond
  + gave me comes with working git functionality.

Testing Done:
   

Ran nosetests -v; all tests pass with patch applied.

  +
  +

Oct 1 - 8

  + Manually tested the repo-hook command by making hooks for pre-receive and
  + post-receive in a local remote repository. I made changes and pushed the changes
  + to test the pre-receive hook, it denied the push as expected because the review
  + request was not marked "Ship It". Allowing the push to succeed caused the
  + post-receive code close the review-request.

Commit:
39f4e50ab9c9271572eab66b55b0cd2f2add6415
1ea1b5644830abc5a0f1a7caf72d5bf2e7c9333f

Checks run (1 failed, 1 succeeded)

flake8 failed.
JSHint passed.

flake8

GR
GR
GR
Review request changed
Change Summary:

Started svn repository hooks unit tests and added basics to Mercurial.

Commit:
d76a380ab6e7560b4b7e6bb042cbe6aebc307c01
c97ca4a0b39aff638a2ad0ab3f56befd41c5d37d

Checks run (1 failed, 1 succeeded)

flake8 failed.
JSHint passed.

flake8

GR
Review request changed
Commit:
c97ca4a0b39aff638a2ad0ab3f56befd41c5d37d
ba97b9f4c0ba14ed0b9559eefdf10072c8a3c9ed

Checks run (1 failed, 1 succeeded)

flake8 failed.
JSHint passed.

flake8

GR
Review request changed
Change Summary:

Working Mercurial pre-commit hooks. Fixed Flake8 errors.

Commit:
ba97b9f4c0ba14ed0b9559eefdf10072c8a3c9ed
1a4d2395433934d6f0ac781bc96a4e406c8c71a3

Checks run (1 failed, 1 succeeded)

flake8 failed.
JSHint passed.

flake8

GR
Review request changed
Change Summary:

Added Mercurial tests, Changed SVN to make Post-commit work, still not working atm. Changed Repo_hook to use command arguments for input

Commit:
1a4d2395433934d6f0ac781bc96a4e406c8c71a3
769cf363965c7c286c9da5893d9b53bf807fa23b

Checks run (1 failed, 1 succeeded)

flake8 failed.
JSHint passed.

flake8

bleblan2
  1. Just a note about the regex being used for parsing the mercurial logs.

  2. rbtools/clients/mercurial.py (Diff revision 8)
     
     
    Show all issues

    Have you checked what happens when the commit message contains a colon+space separator (:)? The regex looks like it would end up splitting a commit message if it is there.

    I'm also guessing the regex would split multiline commit messages at the newline.

    1. Good call. It will mess up. Thanks, I'll change the way I do it.

  3. 
      
GR
GR
GR
NI
  1. 
      
  2. rbtools/commands/__init__.py (Diff revision 11)
     
     
    Show all issues

    run_from_argv now returns the exit code, as opposed to calling sys.exit(exit_code). I'd consider adding what it returns to the function's docstring.

  3. 
      
GR
GR
david
Review request changed
Status:
Discarded