Finden Sie das meiste F-Wort-Commit unter Linux (Git und höher)

tl; dr:

Linux in den letzten Jahren ist nicht so verdammt. Der maximale "F-Wert" betrug 25, der sich auf eine einzelne Datei konzentrierte.

Mokuki

Es gab eine Zeit, in der es eine Linux-Tradition war, aber ich habe den Eindruck, dass es sich in letzter Zeit beruhigt hat. Dennoch gibt es Verweise in den Befehlen fuck und Mailinglisten.

Was hat mich also beeindruckt? Dieses Mal wird die Anzahl der Erscheinungen von F-Wörtern im Festschreibungsprotokoll und dessen Quellcode diff als ** F-Wert ** definiert, und die Festschreibung mit dem höchsten F-Wert (** der Festschreibung mit dem höchsten F-Wert **) wird definiert. Ich beschloss, danach zu suchen.

(Beachten Sie, dass das Commit mit dem gelöschten F-Wort ebenfalls einen hohen F-Wert erhält, da es sich um die Anzahl der Erscheinungen im Quellcode handelt.)

git show alle Commits

Kürzlich habe ich CMake anstelle des Shell-Skripts verwendet, also habe ich es auch dieses Mal in CMake geschrieben.

Grundsätzlich gibt git rev-list HEAD eine Liste von Commits aus, klassifiziert sie in die ersten 3 Zeichen 000 -- fff von Commit-Hash (= 16 ** 3 = 4096 Divisionen) und erstellt ein Ziel. Und lassen Sie "Ninja" parallel ausführen.

Im Linux-Repository (https://github.com/torvalds/linux)

$ git rev-list HEAD | wc -l
897506

Es scheint, dass es ungefähr 900.000 Commits gibt, die zu HEAD führen. ** Beachten Sie jedoch, dass dieses Repository keine Commits vor Git enthält **.

Finden Sie den F-Wert des Commits

Der F-Wert eines Commits wird normalerweise von grep berechnet.

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

Der F-Wert von "HEAD" ist natürlich Null und 1 im Commit https://github.com/torvalds/linux/commit/4b550488f894c899aa54dc935c8fee47bca2b7df, das die peripheren Zeilen des Quellcodes einschließlich des F-Wortes bearbeitet.

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

Es braucht Zeit, um grep so zu verwenden, wie es ist. Daher ist es besser, ein schnelles grep-Tool wie ripgrep (https://github.com/BurntSushi/ripgrep) zu verwenden, um alles zusammen zu finden.

$ 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 mit hohem F-Wert

Das Commit mit dem höchsten F-Wert im Linux-Git-Repository ist das ** erste Commit **, dh der Linux-Quellcode selbst, als er nach Git migriert wurde, mit einem Wert von **, der 56 ** auferlegt.

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

Wie erwartet könnte dieses Engagement in die Hall of Fame aufgenommen werden.

Die Top 3 der anderen Commits sind

** Alle gleichen Dateien ** Verarbeitung für arch / mips / pci / ops-bridge.c ** **. Diese Datei kann in der Geschichte von Linux als ** F-King ** bezeichnet werden.

Diese Datei wurde durch Aufteilen von der Datei "pci-ip27.c" mit einem Commit mit einem F-Wert von 24 erstellt. Wenn wir uns die Originaldatei ansehen, können wir sehen, dass diese Datei von Anfang an ziemlich F war, als Linux von git verwaltet wurde.

--https: //github.com/torvalds/linux/blob/1da177e4c3f41524e886b7f1b8a0c1fc7321cac2/arch/mips/pci/pci-ip27.c#L90 - Enthält zum Zeitpunkt des ersten Commits von Git bereits viele F-Wörter

Umgekehrt werden Dateien mit solchen ausstehenden F-Werten nach der Git-Migration nicht erstellt, sodass gesagt werden kann, dass Linux zumindest in Bezug auf den Quellcode kein F ist.

Übrigens ist der Code mit dem höchsten F-Wert im aktuellen Linux-Kernel-Quellcode "drivers / net / ethernet / sun / sunhme.c" und sein Wert ist ** nur 2 **. Der aktuelle F-Wert von "ops-bridge.c", der oben erwähnt wurde, ist Null und wurde durch ein Commit mit einem F-Wert von 12 gelöscht.

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

Dieses Commit selbst wurde 2019 durchgeführt, aber 2018 gibt es einen Patch-Vorschlag https://lkml.org/lkml/2018/12/1/105, der selbst bei einem Commit mit einem F-Wert von 25 schwer zu verstehen ist Der Versuch, die Grammatik ein wenig zu verbessern https://github.com/torvalds/linux/commit/686957e71d34beffe2b29cf5fb2e05025972020b.

Kanso

Es stellt sich heraus, dass der Linux-Kernel als Software zumindest nach der Git-Migration keinen sehr hohen F-Wert hat. Vor dem Übergang zu Git scheint es Raum für Untersuchungen zu geben, aber es scheint, dass der Eindruck von Hack auf menschliche Aktivitäten zurückzuführen ist.

Möglicherweise benötigen Sie einen besseren Indikator als den F-Wert. Anstatt beispielsweise den F-Wert für jedes Commit zu definieren, kann ein anderer Indikator wie die Lebensdauer des F-Wortes berücksichtigt werden.

Bei dieser F-Wert-Bewertung konnten wir nur auf "ops-bridge.c" achten. Insbesondere beim Extrahieren von Diff-Zeilen ist es anfällig für Zeilenbewegungen und überschätzt den F-Wert beim Festschreiben. Bisher gibt es jedoch kein Format, das die Bewegung über die Datei hinaus gut ausdrücken kann. Zusätzlich zu diff berücksichtigt "git tad" auch die Linienbewegung, und Sie können "-M" oder "-C" verwenden, um die Extraktion durchzuführen.

Recommended Posts

Finden Sie das meiste F-Wort-Commit unter Linux (Git und höher)
Geben Sie die Lautstärke unter Linux an und spielen Sie den Sound ab
Installieren Sie JDK unter Linux
Aufnahme und Wiedergabe unter Linux
Fügen Sie den Link unter Linux ein
Installieren Sie die neueste Version von Git auf Ihrem Linux-Server
Finden Sie große Dateien / Verzeichnisse unter Linux
Finden Sie heraus, wo sich die Java-Entität unter Linux befindet (diesmal CentOS).
[UE4] Erstellen Sie DedicatedServer unter Windows und Linux
Entdecken Sie die meisten Yabe-Funktionen auf Github
Suchen Sie nach Dateien wie Linux Find in Python
Installieren Sie wsl2 und Master Linux unter Windows
Installieren und starten Sie k3s unter Manjaro Linux
Installieren und konfigurieren Sie den TigerVNC-Server unter Linux
Lernen Sie sshd_config und autorisierte_Tasten (für Amazon Linux 2)
Über die Beziehung zwischen Git und GitHub
Suchen Sie es in der Warteschlange und bearbeiten Sie es
Fügen Sie dem Bild Linien und Text hinzu
So finden Sie große Dateien unter Linux
Kompilieren des Linux-Kernels (Linux 5.x unter Ubuntu 20.04)
Stellen Sie unter Linux (Ubuntu) das Trackpad ein und stellen Sie die Funktion auf Drei-Finger-Wischen ein