Skip to content

Commit 0665ce8

Browse files
committed
📝 Update git section
* Add diff source and destination prefix * Add diff with exiftool * Add git list-changed * Add default branch config for init * Add git-symbolic-ref * Add Git Credential Store for Linux * Update shallow clones * Add shell configs and command line tools
1 parent b7214df commit 0665ce8

13 files changed

+503
-116
lines changed

CHANGELOG.rst

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,19 @@ Added
2525
* 📝 Add csv.Sniffer methods
2626
* 📝 Add the removal of git lfs
2727

28+
Changed
29+
~~~~~~~
30+
31+
* 📝 Update git section
32+
33+
* Add diff source and destination prefix
34+
* Add default branch config for init
35+
* Add git-symbolic-ref
36+
* Add Git Credential Store for Linux
37+
* Update shallow clones
38+
* Add shell config
39+
* Add shell config and command line tools
40+
2841
`24.3.0 <https://github.com/cusyio/Python4DataScience-de/compare/24.2.0...24.3.0>`_: 2024-11-19
2942
-----------------------------------------------------------------------------------------------
3043

docs/productive/git/advanced/batch.rst

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ Beispiel
2424
ändert für alle Dateien mit dem Suffix ``.py`` ggf. die Berechtigungen von
2525
``100644`` zu ``100755``, sodass sie ausführbar werden.
2626

27+
.. _git-name-only:
28+
2729
Alle im Arbeits- oder Bühnenbereich geänderten Dateien
2830
------------------------------------------------------
2931

@@ -34,11 +36,26 @@ Alle im Arbeits- oder Bühnenbereich geänderten Dateien
3436
gibt die dem Bühnenbereich hinzugefügten Dateien aus.
3537
:samp:`git diff --staged --name-only "*.{SUFFIX}"`
3638
filtert darüberhinaus noch nach einer bestimmten Dateiendung.
39+
:samp:`git diff --name-only --diff-filter d`
40+
schließt gelöschte Dateien aus.
41+
42+
Dies ist bei mir der häufigste Fall, weswegen ich mir hierfür einen Alias
43+
``list-changed`` angelegt habe: ``git config --global alias.list-changed
44+
'diff --name-only --diff-filter d'``.
3745

3846
Beispiel
3947
~~~~~~~~
4048

41-
:samp:`pytest $(git diff --staged --name-only "tests/test_*.py")`
49+
Um Befehle für die geänderte Dateiliste auszuführen, könnt ihr die
50+
Shell-`Command Substitution
51+
<https://www.gnu.org/software/bash/manual/html_node/Command-Substitution.html>`_
52+
verwenden:
53+
54+
:samp:`$ uv run codespell $(git list-changed '*.py')`
55+
Die Shell führt das in Klammern gesetzte ``git list-changed`` aus und fügt
56+
dessen Ausgabe in den äußeren Befehl ein. ``codespell`` erhält also die
57+
Liste der geänderten Textdateien als Argument.
58+
:samp:`uv run pytest $(git diff --staged --name-only "tests/*test_*.py")`
4259
ruft :doc:`python-basics:test/pytest/index` auf, um anschließend nur
4360
diejenigen Testmodule auszuführen, die im Arbeitsverzeichnis geändert
4461
wurden.

docs/productive/git/advanced/binary-files.rst

Lines changed: 86 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
Git für Binärdateien
32
====================
43

@@ -25,16 +24,16 @@ Excel-Dateien verwenden:
2524
:language: python
2625
:lines: 5-
2726

28-
Nun fügt ihr noch in der globalen Git-Konfiguration in der Datei :file:`~/.gitconfig`
29-
den folgenden Abschnitt hinzu:
27+
Nun fügt ihr noch in der globalen Git-Konfiguration in der Datei
28+
:file:`~/.config/git/config` den folgenden Abschnitt hinzu:
3029

3130
.. code-block:: ini
3231
3332
[diff "excel"]
3433
textconv=python3 /PATH/TO/exceltocsv.py
3534
binary=true
3635
37-
Schließlich wird in der globalen :file:`~/.gitattributes`-Datei unser
36+
Schließlich wird in der globalen :file:`~/.config/git/attributes`-Datei unser
3837
``excel``-Konverter mit :file:`*.xlsx`-Dateien verknüpft:
3938

4039
.. code-block:: ini
@@ -58,15 +57,15 @@ Hierfür wird zusätzlich ``pdftohtml`` benötigt. Ihr installiert es mit
5857
5958
$ brew install pdftohtml
6059
61-
Anschließend fügt ihr den folgenden Abschnitt der globalen Git-Konfiguration in der
62-
Datei :file:`~/.gitconfig` hinzu:
60+
Anschließend fügt ihr den folgenden Abschnitt der globalen Git-Konfiguration in
61+
der Datei :file:`~/.config/git/config` hinzu:
6362

6463
.. code-block:: ini
6564
6665
[diff "pdf"]
6766
textconv=pdftohtml -stdout
6867
69-
Schließlich wird in der globalen :file:`~/.gitattributes`-Datei unser
68+
Schließlich wird in der globalen :file:`~/.config/git/attributes`-Datei unser
7069
``pdf``-Konverter mit :file:`*.pdf`-Dateien verknüpft:
7170

7271
.. code-block:: ini
@@ -76,10 +75,10 @@ Schließlich wird in der globalen :file:`~/.gitattributes`-Datei unser
7675
Nun wird beim Aufruf von ``git diff`` die PDF-Datei zunächst konvertiert und
7776
dann ein Diff über den Ausgaben des Konverters durchgeführt.
7877

79-
… für Word-Dokumente
80-
--------------------
78+
… für Dokumente
79+
---------------
8180

82-
Auch Unterschiede in Word-Dokumenten lassen sich anzeigen. Hierfür kann `Pandoc
81+
Auch Unterschiede in Dokumenten lassen sich anzeigen. Hierfür kann `Pandoc
8382
<https://pandoc.org/>`_ verwendet werden, das einfach installiert werden kann
8483
mit
8584

@@ -100,22 +99,34 @@ mit
10099
Herunterladen und Installieren der aktuellen :file:`.msi`-Datei von `GitHub
101100
<https://github.com/jgm/pandoc/releases/>`_.
102101

103-
Anschließend wird der globalen Git-Konfiguration :file:`~/.gitconfig` folgender
104-
Abschnitt hinzugefügt:
102+
Anschließend wird der globalen Git-Konfiguration :file:`~/.config/git/config`
103+
folgender Abschnitt hinzugefügt:
105104

106105
.. code-block:: ini
107106
108-
[diff "word"]
109-
textconv=pandoc --to=markdown
110-
binary=true
111-
prompt=false
107+
[diff "pandoc-to-markdown"]
108+
textconv = pandoc --to markdown
109+
cachetextconv = true
112110
113-
Schließlich wird in der globalen :file:`~/.gitattributes`-Datei unser
114-
``word``-Konverter mit :file:`*.docx`-Dateien verknüpft:
111+
Schließlich wird in der globalen :file:`~/.config/git/attributes`-Datei unser
112+
``pandoc-to-markdown``-Konverter mit :file:`*.docx`, :file:`*.odt` und
113+
:file:`*.rtf`-Dateien verknüpft:
115114

116115
.. code-block:: ini
117116
118-
*.docx diff=word
117+
*.docx diff=pandoc-to-markdown
118+
*.odt diff=pandoc-to-markdown
119+
*.rtf diff=pandoc-to-markdown
120+
121+
.. tip::
122+
:doc:`Jupyter Notebooks <jupyter-tutorial:notebook/index>` schreiben in eine
123+
JSON-Datei :ref:`*.ipynb <jupyter-tutorial:was-ist-eine-ipynb-datei>`, die
124+
ziemlich dicht und insbesondere bei Diffs schwer zu lesen ist. Die
125+
Markdown-Darstellung von Pandoc vereinfact dies:
126+
127+
.. code-block:: ini
128+
129+
*.ipynb diff=pandoc-to-markdown
119130
120131
Die gleiche Vorgehensweise kann auch angewandt werden, um nützliche Diffs von
121132
anderen Binärdateien zu erhalten, :abbr:`z.B. (zum Beispiel)` ``*.zip``,
@@ -124,3 +135,59 @@ Metainformationen von Bildern mit ``exiv2``. Zudem gibt es
124135
Konvertierungswerkzeuge für die Umwandlung von :file:`*.odt`, :file:`*.doc` und
125136
anderen Dokumentenformaten in einfachen Text. Für Binärdateien, für die es
126137
keinen Konverter gibt, reichen oft auch Strings aus.
138+
139+
… für Medien-Dateien
140+
--------------------
141+
142+
`ExifTool <https://exiftool.org>`_ kann verwendet werden um die Metadaten der
143+
Medien-Dateien in Text zu konvertieren.
144+
145+
.. tab:: Debian/Ubuntu
146+
147+
.. code-block:: console
148+
149+
$ sudo apt install libimage-exiftool-perl
150+
151+
.. tab:: macOS
152+
153+
.. code-block:: console
154+
155+
$ brew install exiftool
156+
157+
.. tab:: Windows
158+
159+
.. code-block:: ps1
160+
161+
> choco install exiftool
162+
163+
.. seealso::
164+
* `Installing ExifTool <https://exiftool.org/install.html>`_
165+
166+
Anschließend könnt ihr in der globalen Git-Konfigurationsdatei
167+
:file:`~/.config/git/config` folgenden Abschnitt hinzufügen:
168+
169+
.. code-block:: ini
170+
171+
[diff "exiftool"]
172+
textconv = exiftool --composite -x 'Exiftool:*'
173+
cachetextconv = true
174+
xfuncname =
175+
"^-.*$"
176+
177+
Schließlich wird in der :file:`~/.config/git/attributes` der
178+
``exiftool``-Konverter mit Datei-Endungen von Medien-Dateien verknüpft:
179+
180+
.. code-block:: ini
181+
182+
*.avif diff=exiftool
183+
*.bmp diff=exiftool
184+
*.gif diff=exiftool
185+
*.jpeg diff=exiftool
186+
*.jpg diff=exiftool
187+
*.png diff=exiftool
188+
*.webp diff=exiftool
189+
190+
.. seealso::
191+
``exiftool`` kann noch viele weitere Medien-Dateien verarbeiten. Eine
192+
vollständige Liste erhaltet ihr in `Supported File Types
193+
<https://exiftool.org/#supported>`_.
Loading
266 KB
Loading

docs/productive/git/advanced/index.rst

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,9 @@ Fortgeschrittenes Git
4444
notes
4545
hooks/index
4646
jupyter-notebooks
47-
binary-files
47+
shell
4848
batch
49+
binary-files
4950
lfs
5051
vs-code/index
5152
gitlab/index

0 commit comments

Comments
 (0)