web-dev-qa-db-fra.com

Signification de Github Ahead / Behind Metrics

En langage clair (avec un exemple simple, espérons-le), que signifient les mesures avant/arrière sur la branche d'un dépôt Github?

Et quelles sont les implications pour cette branche et l'attention qu'elle reçoit? Être "derrière" est-il un mauvais signe pour une succursale?

63
LikeMaBell

Ahead est le nombre de validations sur cette branche qui n'existent pas sur la branche de base. Derrière se trouve le nombre de validations sur la branche de base qui n'existent pas sur cette branche.

Devant et derrière sont presque comme une sorte de métrique "d'âge". Le chiffre suivant vous indique approximativement l'impact de la branche sur la branche de base en cas de fusion. Le chiffre derrière vous indique combien de travail s'est produit sur la branche de base depuis le démarrage de cette branche.

Je trouve le chiffre derrière vraiment utile pour juger si une branche est susceptible de fusionner proprement. Lorsque beaucoup de travail s'est produit sur la branche de base, il est plus probable que les deux branches ont modifié la ou les mêmes lignes. Lorsque l'arrière est grand, c'est un signe que vous devriez probablement fusionner la branche de base dans cette branche pour synchroniser. Une fois que vous avez fusionné la branche de base dans cette branche, derrière sera 0.

68
rtomayko

Si vous êtes plutôt de type visuel, jetez un œil ici:

◈ - ◈ - A - ◈ - B
      \
        ◈ - C

A vaut 2 commet derrière et 0 commet devant B
B est 0 s'engage derrière et 2 s'engage devant A
C est 1 commit en retard et 2 commits en avance sur A
C est 3 engage derrière et 2 engage devant B

Donc "derrière" signifie que l'autre branche a validé celle-ci ne le fait pas, et "en avant" signifie que cette branche a validé l'autre non.

64
Tekkub

Les métriques comme celles que vous pouvez voir pour ce projet décrivent, comparent à une branche du repo (comme master) :

  • le nombre de nouveaux commits effectués par le référentiel GitHub par rapport à une autre branche d'un autre référentiel: ce sont les derrière commits: l'autre référentiel est derrière par rapport à le dépôt actuel (voir ces commits ).
  • le nombre de nouveaux validations effectuées par une autre branche d'un autre référentiel par rapport au référentiel actuel: ce sont les prochains commits: l'autre référentiel est en avance par rapport au repo actuel (voir ces commits ).

Le détail technique est illustré par le script "déterminant quels repos sont devant/derrière Origin" :
Il s'agit de vérifier:

  • ce que les commits sont accessibles depuis une autre branche, mais pas depuis la branche locale:
    git rev-list "$localref..$anotherref"
  • ce que les commits sont accessibles depuis la branche locale, mais pas depuis l'autre branche: derrière
    git rev-list "$anotherref..$localref"
6
VonC

Une chose à noter est que le "derrière" de github compte également les validations de fusion. Vous pouvez vérifier le "derrière" avec: git log mybranch1 ^ mybranch2 et il devrait vous montrer le même nombre de commits. Si vous avez des validations de fusion, vous pouvez les exclure avec --no-merges dans la dernière commande.

1
Matjaz Muhic