TIL #4 - Mixins, branches et tests avec git
Mixins et héritage
Dans Python (et surtout Django ici), l'ordre et la façon d'hériter des classes sont importantes.
class First():
def __init__(self):
print("First")
class Second():
def __init__(self):
print("Second")
class Tutu(First, Second):
def __init__(self):
super().__init__()
print("tutu")
Tutu()
Ce code donne :
First
tutu
L'__init__()
de Second()
est passé à la trappe.
J'ai pas encore de solution pour prendre en compte tous les __init__()
.
Pour creuser, c'est lié à la method resolution order (MRO).
Git : supprimer les branches locales qui ont été supprimées sur le serveur (remote)
- on nettoie les références qui n'existent plus en remote :
git fetch -p
- on peut regarder les branches supprimées :
git branch -v
(où[gone]
symbolise les branches supprimées en remote) - filtrer ces branches :
git for-each-ref --format '%(refname:short) %(upstream:track)' | awk '$2 == "[gone]" {print $1}'
- on pipe ça avec xargs :
git for-each-ref --format '%(refname:short) %(upstream:track)' | awk '$2 == "[gone]" {print $1}' | xargs -r git branch -D
Et on peut en faire un alias git :
[alias]
gone = ! "git fetch -p && git for-each-ref --format '%(refname:short) %(upstream:track)' | awk '$2 == \"[gone]\" {print $1}'"
gonedel = ! "git fetch -p && git for-each-ref --format '%(refname:short) %(upstream:track)' | awk '$2 == \"[gone]\" {print $1}' | xargs -r git branch -D"
Voilà !
Git : pour vérifier que tous les commits passent des tests
Deux choix :
- avec
git rebase -i master -x 'pytest tests'
- avec
git bisect
, ici ça permet d'isoler le commit qui introduit une erreur, le cas échéant)
Git : afficher le nombre de délétions et additions
Pour équilibrer les commits, on peut vouloir regarder le nombre de lignes ajoutées et supprimées. Et hop :
git log --shortstat