• 
      

    Access remote git repositories (ssh scheme url) without a raw file url.

    Review Request #4910 — Created Nov. 6, 2013 and discarded — Latest diff uploaded

    Information

    jop
    Review Board
    master

    Reviewers

    Access remote git repositories (ssh scheme url) without a raw file url.

    Git-shell, as usually configured on ssh git servers, allows executing
    arbitrary commands. This patch uses this feature to avoid having to setup
    an http server for raw files.

    To use this feature:

    1. Set both path and mirror path to the same ssh git url, without the .git
    sufix.

    2. Leave raw file url mask empty.

    3. Add the following script in ~/git-shell-commans/rb-cat-file:

    ------------
    #!/usr/bin/env sh
    git --git-dir="$1/.git" cat-file $2 $3
    ------------

    This assumes that ssh authentication is working, by having setup the
    proper ssh authorization at the server.

    This has been tested in release 1.7.16 (current Fedora rpm installation) with a remote git repo on a different server. It works for submitting and updating review requests from rbt and the web interface.

    Tests with invalid setups are as follows:

    1. Missing chsh to git-shell:


      $ rbt post -g
      ERROR:root:Error uploading diff

    One or more fields had errors (HTTP 400, API Error 105)

    path: bash: rb-cat-file: command not found
    

    Your review request still exists, but the diff is not attached.

    1. Not chmod-ing the script 755:


      $ rbt post -g
      ERROR:root:Error uploading diff

    One or more fields had errors (HTTP 400, API Error 105)

    path: fatal: unrecognized command 'rb-cat-file /path/to/repo -t pha7AhquZa7icohBeoPh2AjuuthaiNg4faiMi9oo'
    

    Your review request still exists, but the diff is not attached.

    1. Not having the script at all:


      $ rbt post -g
      ERROR:root:Error uploading diff

    One or more fields had errors (HTTP 400, API Error 105)

    path: fatal: unrecognized command 'rb-cat-file /path/to/repo -t pha7AhquZa7icohBeoPh2AjuuthaiNg4faiMi9oo'
    

    Your review request still exists, but the diff is not attached.

    1. Any of the above from the web interface: the same error (i.e. the "path:" line) appears in red by the diff selector.

    1. Corrupting the commit id fed to the script (this can only be done by changing the source code):


      $ rbt post -g
      ERROR:root:Error uploading diff

    The file was not found in the repository (HTTP 400, API Error 207)

    Your review request still exists, but the diff is not attached.

    1. Corrupting the commit id fed to the script in the web interface (this can only be done by changing the source code):

    "The file 'README' (rd702173) could not be found in the repository" appears in red by the diff selector.