Trouvez le commit le plus F-word sur Linux (git et versions ultérieures)

tl; dr:

Linux ces dernières années n'est pas si putain. La «valeur F» maximale était de 25, concentrée sur un seul fichier.

Mokuki

Il fut un temps où c'était une tradition Linux, mais j'ai l'impression que ça s'est calmé récemment. Pourtant, il y a des références dans la commande fuck et les listes de diffusion.

Alors quel est l'événement qui m'a impressionné? Cette fois, le nombre d'apparitions du mot F dans le journal de validation et son code source diff est défini comme ** valeur F , et le commit avec la valeur F la plus élevée ( le commit le plus F-valué **) est défini. J'ai décidé de le chercher.

(Notez que le commit avec le mot F supprimé reçoit également une valeur F élevée car c'est le nombre d'apparitions dans le code source diff)

git show tous les commits

Récemment, j'ai utilisé CMake au lieu du script shell, donc je l'ai également écrit dans CMake cette fois-ci.

Fondamentalement, git rev-list HEAD affiche une liste de commits, la classe dans les 3 premiers caractères 000 -- fff du hachage de commit (= 16 ** 3 = 4096 divisions) et construit la cible. Et laissez ninja s'exécuter en parallèle.

Dans le référentiel Linux (https://github.com/torvalds/linux)

$ git rev-list HEAD | wc -l
897506

Il semble qu'il y ait environ 900 000 commits qui mènent à HEAD. Cependant, ** Notez que ce référentiel ne contient pas de commits pré-Git **.

Trouvez la valeur F du commit

La valeur F d'un commit est généralement calculée par grep.

$ git show -p -w HEAD | grep -ci fuck
0

La valeur F de HEAD est naturellement zéro, et c'est 1 dans le commit https://github.com/torvalds/linux/commit/4b550488f894c899aa54dc935c8fee47bca2b7df qui modifie les lignes périphériques du code source incluant F-word.

$ git show -p -w 4b550488f894c899aa54dc935c8fee47bca2b7df | grep -ci fuck
1

Il faut du temps pour utiliser grep tel quel, il est donc préférable d'utiliser un outil de grep à grande vitesse tel que ripgrep (https://github.com/BurntSushi/ripgrep) pour tout trouver ensemble.

$ rg -ci fuck
fa/76/fa7662aad7dc033a61ff2f705c33cbb301d0552d.diff:1
f4/db/f4dbc4c20f05ccf6986b0de429f7552b21a1b362.diff:1
51/53/51533b615e605d86154ec1b4e585c8ca1b0b15b7.diff:1
29/57/2957c9e61ee9c37e7ebf2c8acab03e073fe942fd.diff:2
36/5b/365bff806e9faba000fb4956c7486fbf3a746d96.diff:1
5b/5f/5b5f9560354dc5a3a27ce57a86aec6b98531ee21.diff:1
96/39/963945bf93e46b9bf71a07bf9c78183e0f57733a.diff:1
b2/e1/b2e1b30290539b344cbaff0d9da38012e03aa347.diff:2

Commit avec une valeur F élevée

Le commit avec la valeur F la plus élevée dans le référentiel git Linux est le ** premier commit **, c'est-à-dire le code source Linux lui-même lorsqu'il a été migré vers git, avec une valeur de ** imposant 56 **.

$ git show -p -w 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 | grep -ci fuck
56

Comme prévu, cet engagement pourrait être intronisé au Temple de la renommée.

Le top 3 des autres commits sont

** Tous les mêmes fichiers ** ʻarch / mips / pci / ops-bridge.c` ** traitement **. Ce fichier peut être appelé ** F-King ** dans l'histoire de Linux.

Ce fichier a été créé en séparant le fichier pci-ip27.c avec un commit avec une valeur F de 24. En regardant le fichier original, nous pouvons voir que ce fichier était assez F depuis le début lorsque Linux a commencé à être géré par git.

--https: //github.com/torvalds/linux/blob/1da177e4c3f41524e886b7f1b8a0c1fc7321cac2/arch/mips/pci/pci-ip27.c#L90 - contient déjà de nombreux mots F au moment du premier commit de Git

Inversement, les fichiers avec de telles valeurs F exceptionnelles ne sont pas créés après la migration git, on peut donc dire que Linux n'est pas F au moins en termes de code source.

Au fait, le code avec la valeur F la plus élevée dans le code source actuel du noyau Linux est drivers / net / ethernet / sun / sunhme.c, et sa valeur est ** seulement 2 **. La valeur F actuelle de ʻops-bridge.c` mentionnée ci-dessus est zéro et a été effacée par un commit avec une valeur F de 12.

cleaned up language in arch/mips/pci/ops-bridge.c

Ce commit lui-même a été fait en 2019, mais en 2018, il existe une proposition de correctif https://lkml.org/lkml/2018/12/1/105 qui est difficile à comprendre, même avec un commit avec une valeur F de 25 Essayer d'améliorer un peu la grammaire https://github.com/torvalds/linux/commit/686957e71d34beffe2b29cf5fb2e05025972020b.

Kanso

Il s'avère que le noyau Linux en tant que logiciel n'a pas une valeur F très élevée, du moins après la migration Git. Il semble y avoir place à l'enquête avant le passage à Git, mais il semble que l'impression de Hack soit due aux activités humaines.

Vous aurez peut-être besoin d'un meilleur indicateur que la valeur F. Par exemple, plutôt que de définir la valeur F pour chaque validation, un autre indicateur tel que la durée de vie du mot F peut être considéré.

Dans cette évaluation de la valeur F, nous ne pourrions prêter attention qu'à ʻops-bridge.c. Surtout lors de l'extraction de lignes de diff, il est vulnérable au mouvement de ligne et surestime la valeur F dans commit. Cependant, jusqu'à présent, il n'existe aucun format qui puisse bien exprimer le mouvement au-delà du fichier. En plus de diff, git blame considère également le mouvement de ligne, et vous pouvez utiliser -M ou -C` pour effectuer l'extraction.

Recommended Posts

Trouvez le commit le plus F-word sur Linux (git et versions ultérieures)
Spécifiez le volume sous Linux et jouez le son
Installez JDK sur Linux
Enregistrement et lecture sous Linux
Collez le lien sous Linux
Installez la dernière version de Git sur votre serveur Linux
Rechercher des fichiers / répertoires volumineux sous Linux
Découvrez où se trouve l'entité Java sur Linux (CentOS cette fois)
[UE4] Construire DedicatedServer sous Windows et Linux
Découvrez les fonctions les plus yabe sur github
Trouver des fichiers comme Linux Find en Python
Installez wsl2 et master linux sous Windows
Installer et lancer k3s sur Manjaro Linux
Installer et configurer le serveur TigerVNC sous Linux
Découvrez sshd_config et allowed_keys (pour Amazon Linux 2)
À propos de la relation entre Git et GitHub
Trouvez-le dans la file d'attente et modifiez-le
Ajouter des lignes et du texte sur l'image
Comment trouver des fichiers volumineux sous Linux
Compilation du noyau Linux (Linux 5.x sur Ubuntu 20.04)
Sous Linux (Ubuntu), réglez le Trackpad et réglez la fonction sur un balayage à trois doigts