Gerrit/outil git-review

This page is a translated version of the page Gerrit/git-review and the translation is 100% complete.

git-review est un outil en mode ligne de commande pour Git / Gerrit permettant de soumettre une modification, ou de récupérer une modification existante.

Notez que Wikimedia Gerrit nécessite la version 1.27 ou supérieure de git-review.

La branche principale du projet est gérée par OpenStack. A ne pas confondre avec le projet Facebook qui est indépendant.

Installation

Voir aussi : tutoriel Gerrit

Après avoir installé Git (1, 2), créé un compte utilisateur Gerrit, créé une clé ssh (3, 4), et cloné le dépôt de votre projet (ou celui de l'exemple), vous êtes prêt à installer git-review, un outil pour travailler avec les dépôts Gerrit qui vous évite de mémoriser les commandes correspondantes. Suivez les instructions ci-dessous en fonction de votre système d'exploitation, et n'oubliez pas de le configurer ensuite !

Linux

Debian/Ubuntu/Mint

Les utilisateurs de Debian ou des distributions associées (telles que Ubuntu, Mint) sur un hôte partagé n'ont habituellement pas l'accès root. Si l'administrateur de votre site d'hébergement ne peut pas vous installer git-review, vous pouvez essayer de le faire localement. Allez à la section correspondante ci-dessous.

Avec un accès root

Vous pouvez faire :

sudo apt-get install git-review

ou :

sudo apt-get install python-pip
sudo easy_install pip
sudo pip install git-review

Si vous ne disposez pas de easy_install, essayez :

sudo apt-get install python-setuptools

Si vous n'avez pas apt-get mais que python est installé, vous pouvez utiliser ceci (voir plus loin pour les instructions particulières pour OS X) :

sudo easy_install pip
sudo pip install git-review

Si vous avez Ubuntu 20.04, essayez :

sudo apt-get install python3-pip
sudo pip3 install git-review

Puis exécutez :

git review -s

dans votre copie clonée, pour configurer votre environnement de travail Gerrit. On vous demandera probablement votre nom d'utilisateur pour la validation. L'accroche commit-msg sera ensuite automatiquement installée.

Si vous étiez configurés précédemment avec Ubuntu 18.04, essayez de mettre à jour git-review car la version embarquée 1.26.0 ne fonctionne pas.

Sans accès root

Si vous êtes sur un hôte partagé et que votre système n'a pas git-review, vous pouvez l'installer localement dans votre répertoire utilisateur.

virtualenv --python=/usr/bin/python2.6 virtualenv
virtualenv/bin/pip install git-review

Si ceci est votre première installation locale, ou si vous ne l'avez pas encore fait, mettez à jour votre variable d'environnement PATH pour prendre en compte les binaires locaux. Il y a deux manières de faire cela. La manière la plus conservative :

PATH=$PATH:~/virtualenv/bin/

laisse le système chercher d'abord parmi les répertoires des binaires, et ne consulte le répertoire local des binaires que si la commande n'a pas été trouvée auparavent. Si vous voulez que le logiciel installé localement dans votre répertoire home prévale sur les programmes du système, vous devez inverser l'ordre d'exploration.

PATH=~/virtualenv/bin/:$PATH

Vous avez peut-être déja fait cela plus tôt. Vous pouvez ajouter la commande de votre choix à votre séquence de connexion pour qu'elle s'exécute automatiquement.

Si vous ne voulez pas modifier votre variable PATH vous n'y êtes pas obligé. Dans ce cas, vous ne pouvez pas utiliser la commande git review mais utilisez ~/virtualenv/bin/git-review à la place.

Exécutez enfin :

git review -s

ou

~/virtualenv/bin/git-review -s

respectivement, dans votre copie clonée pour le configurer afin qu'il fonctionne avec Gerrit. On vous demandera probablement votre nom d'utilisateur pour la validation. L'accroche commit-msg sera ensuite automatiquement installée.

Fedora≤21/CentOS

sudo yum install git-review

Si pendant l'utilisation de git-review vous voyez ImportError: No module named requests, vous devrez installer python-requests :

sudo yum install python-requests

Il est possible que yum ne trouve pas le paquet git-review -- dans ce cas vous pouvez autoriser le répertoire EPEL et recommencer.

Fedora≥22

sudo dnf install git-review

OpenSUSE

Installez (YaST) le python-setuptools, ensuite :

easy_install pip
pip install git-review

 

Depuis OpenSUSE 13.1, git-review se trouve dans le dépôt principal, vous pouvez donc utiliser :

sudo zypper in git-review

Gentoo

emerge dev-python/git-review

Arch Linux

Arch ne dispose pas de git-review dans les dépôts mais possède un PKGBUILD dans le AUR :

git clone https://aur.archlinux.org/git-review.git
cd git-review
makepkg -s
sudo pacman -U <resultingpackage>

NixOS (ou n'importe quel Linux avec Nix installé)

git-review est disponible en tant que paquet dans les branches stable et instable de nixpkgs. Essayez-le en ouvrant un shell où git-review est disponible :

Stable
nix run -f channel:nixos-21.05 git-review  # adjust to your release

Instable
nix run -f channel:nixos-unstable git-review

Faites l'installation selon votre méthode préférée (votre propre gestionnaire, ou via la configuration du système ou encore avec nix-env).

Installation avec l'installateur du paquet Python pip

Note: si apt-get n'est pas installé mais que python l'est, vous pouvez également installer la dernière version de git-review en utilisant l'installateur de paquets Python. La commande exacte dépend de votre distribution, soit :

sudo apt-get install python-pip

ou

sudo easy_install pip

 

Une fois pip installé, vous pouvez utiliser :

sudo pip install git-review

 

FreeBSD

Vous pouvez directement installer git-review par les ports.

cd /usr/ports/devel/git-review
make install

Windows

Il faut Python pour que git-review fonctionne et pip sert à l'installer :

  • Installez Python ou mettez à jour avec la version la plus récente de Python 2 ou Python 3.
  • Important: n'installez pas Python dans un dossier où il y a un espace dans l'expression du chemin car cela pose un problème dans pip (voir [1]), utilisez la valeur par défaut, c'est à dire C:\Python34\
  • Durant l'installation de Python, sélectionnez manuellement « Add python.exe to Path » pour ajouter l'exécutable python à la variable d'environnement Path.
  • Sinon ajoutez vos répertoires de scripts Python manuellement parmi les chemins système (Menu→Paramètres→Panneau de contôle→Système→Paramètres système avancés→Variables d'environnement→Variables utilisateur→Path; par exemple C:\Python34\;C:\Python34\Scripts\;). Dans PATH, les différents répertoires sont séparés uniquement par un point-virgule ; - n'ajoutez aucun espace à la liste des chemins.
  • Python 3.4 possède déjà pip installé. Seulement si vous avez une version plus ancienne, installez pip en suivant ces instructions.
  • Exécutez Git Bash en tant qu'administrateur (cliquez-droit sur l'icône pour voir cette option) et installez git-review à l'aide des commandes suivantes :
pip install git-review
Si vous avez des problèmes comme par exemple :
 Retrying (Retry(total=4, connect=None, read=None, redirect=None)) after connection broken by 'ConnectTimeoutError(<pip._vendor.requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x03B55750>, 'Connection to pypi.python.org timed out. (connect timeout=15)')': /simple/git-review/
essayez d'exécuter :
pip install git-review --proxy=www-proxy-lon.uk.oracle.com:80
le proxy à utiliser exactement peut être extrait du fichier http://wpad/wpad.dat .
  • Pour utiliser git review, vous devez être dans un répertoire cloné de Git qui contient déjà un fichier de configuration .gitreview éventuellement caché (voir Configurer un dépôt pour Git distant)

Mac OS X

Méthode 1 (Homebrew)

Fonctionne sous OS X 10.11 El Capitan et ultérieur (vérifié sous High Sierra 10.13.5) :

  1. Installer Homebrew
  2. Installer git-review avec brew install git-review

Méthode 2 (paquet Python de l'installateur pip)

Mac OS X est livré avec Python 2.7 (jusqu'à présent) mais sans les programmes d'installation pris en charge par Git et git-review.

  1. Ouvrez une fenêtre Terminal et placez-vous dans un répertoire pour y télécharger les paquets de test Git (par exemple Téléchargement)
  2. Téléchargez et installez l'installeur OS X pour Git (pour OS X 10.8 et antérieur uniquement; OS X 10.9 est livré avec Git préinstallé)
  3. Installez pip (déjà présent dans les versions plus anciennes de OS X) :
    sudo easy_install pip
    
  4. Mettez à jour pip/setuptools (pour OS X 10.7 et antérieur uniquement
    sudo pip install -U setuptools
    
  5. Installez git-review. Depuis la version « El Capitan » , OS X protège les emplacements du système de fichiers y compris /System/Library/Frameworks/Python.framework/Versions/2.7/share, donc la méthode d'installation habituelle utilisant sudo va échouer. A la place, vous installerez git-review localement dans votre répertoire home de la manière suivante :
 pip install --user git-review
  1. Mettez à jour votre variable d'environnement PATH pour inclure le chemin vers git-review qui doit être dans $HOME/Library/Python/2.7/bin

Si vous obtenez l'erreur pkg_resources.DistributionNotFound: git-review, vous pouvez essayer de supprimer le Python préinstallé (/Library/Python/), en installant Python via homebrew (brew install python), puis en réinstallant setuptools et git-review.

Si vous obtenez un message git command not found après que l'installation ait à priori réussi, n'essayez pas de réinstaller par dessus l'existant, mais désinstallez git-review et refaites sudo pip install -U setuptools

Configurer git-review

Suivez les instructions du tutoriel Gerrit pour configurer git-review de sorte à ce qu'il utilise « origin » comme étant le distant par défaut. Ceci évite la confusion et les conflits entre des distants nommés gerrit et origin.

Après avoir cloné un dépôt, vous devez le paramètrer pour utiliser git-review. Ceci se fera automatiquement la première fois que vous essayerez de soumettre une validation, mais il est généralement mieux de le faire juste après avoir cloné.

cd MyNewProj
git review -s

On pourra vous demander votre nom d'utilisateur git, s'il diffère du nom de l'utilisateur du shell que vous utilisez.

En interne, voici ce qui se passe :

  • il vérifie si l'accès au dépôt distant est possible
  • si ce n'est pas le cas, il demande un nom d'utilisateur et renouvelle l'essai
  • il crée un distant appelé 'gerrit' qui pointe sur gerrit
  • il installe l'accroche commit-msg

Publier les modifications avec git-review

Soumettre des modifications avec git-review n'implique que très peu de commandes :

git checkout -b mycoolfeature
[change files]
git commit -a
git review

Ce qui se passe quand vous publiez vos modifications

Lorsque vous soumettez une modification, git-review réalise les actions suivantes :

  • il cherche dans le fichier .gitreview la branche à pousser (production ou autre). S'il ne peut pas trouver cette information, il pousse sur le master.
  • il extrait le titre à attribuer à la révision (vous pouvez définir le sujet manuellement avec -t)
    • si vous soumettez à nouveau une modification téléchargée, il reprendra le titre de la modification originale
    • si le résumé de votre modification contient un numéro de bogue tel que bug 12345, le titre sera bug/12345
    • sinon, le titre sera le nom de votre branche locale
  • il fait un rebase de vos modifications sur la tête (HEAD) de la branche sur laquelle vous poussez (utilisez -R pour sauter cette étape)
  • si vous soumettez plus d'une correction à la fois, ou si vous soumettez une modification basée sur une autre modification qui n'a pas été fusionnée, il vous sera demandé si vous voulez réellement faire cela (utilisez -y pour sauter cette étape)
  • il pousse la modification pour relecture.

Modification du travail en cours

If you want to share an unfinished change (for example to ask help on how to solve a problem), you can use the --draftoption to mark the patch as WIP (you can filter out such patches in Gerrit searches using -is:wip):

git review --draft

It's best practice to also prefix the commit summary with [WIP] when doing that.

Télécharger une modification avec git-review

Lorsque vous téléchargez une modification à partir de gerrit pour la relire ou pour l'amender, git-review offre une alternative pour copier/coller une incantation magique à partir de l'interface utilisateur web Gerrit. Tout ce dont vous avez besoin, c'est le numéro de séquence de la modification dans Gerrit, que vous pouvez trouver dans l'URL : https://gerrit.wikimedia.org/r/2033.

git review -d 2033

Ceci va télécharger la modification, la placer dans une branche appelée review/AUTHOR/TAG (si la modification n'a pas d'étiquette, le numéro de séquence sera utilisé à la place) et qui deviendra la branche courante.

Après cela, vous pouvez amender la modification téléchargée afin de l'améliorer.

Alternatively, you can use git review -x 2033 to download (cherry-pick) the patch into the current branch.

Résolution des problèmes

Pour les problèmes et la manière de les résoudre, voir Gerrit/Troubleshooting.

Sous Windows

Si cela ne fonctionne pas, il existe plusieurs possibilités. D'abord il faut utiliser scp (secure copy) à partir du répertoire local correspondant à chacun de vos dépôts, avant de valider les modifications à l'intérieur :

scp -P 29418 USERNAME@gerrit.wikimedia.org:hooks/commit-msg .git/hooks/commit-msg

Ensuite il faut essayer de patcher c:\Python27\Scripts\git-review pour que git-review fonctionne correctement :

--- /c/Python27/Scripts/git-review-old  Tue May 28 20:51:50 2013
+++ /c/Python27/Scripts/git-review      Tue May 28 20:48:03 2013
@@ -952,6 +952,9 @@
     config = get_config(os.path.join(top_dir, ".gitreview"))
     hook_file = os.path.join(git_dir, "hooks", "commit-msg")

+    # msysgit hacks to work around scp.exe (--aaron)
+    hook_file = unicode.replace( ".\%s" % os.path.relpath( hook_file ), "\\", "/" )
+
     defaultrebase = convert_bool(
         git_config_get_value("gitreview", "rebase",
                              default=str(config['defaultrebase'])))

Si vous utilisez Python 2.x et git-review 1.17 ou antérieur, utilisez str.replace au lieu de unicode.replace.

Une autre erreur rencontrée sous Windows est :

    ...
    (top_dir, git_dir) = git_directories()
ValueError: too many values to unpack (expected 2)

Une solution pour cela est de modifier la ligne retournée de git_directories() et d'utiliser les splitlines plutôt que la fonction normale split. Split recherche les espaces et génère cette erreur quand le chemin de votre répertoire de code source contient un espace. Splitlines recherche les caractères de passage à la ligne et ne produit pas cette erreur.

     return out.splitlines()

Voir aussi