.gitignore
Eine der häufigsten Aufgaben nach dem "Initial Commit" eines Projekts ist das Erstellen eines netten "Gitignore" aus gitignore.io, oder? [^ 1] [^ 2]
** Gibt es? ** ** **
Es ist kein Problem, wenn es so betrieben werden kann, wie es am Anfang ist.
Das kann herauskommen.
** Es wird herauskommen. ** ** **
In Fall (1) müssen Sie möglicherweise erneut zu gitignore.io gehen und es neu generieren.
Im Fall von (2) muss ich es irgendwo in die vorlagengenerierte .gitignore
schreiben.
In diesem Fall kann es bei jeder Reaktion auf (1) zu Problemen kommen. Vielleicht
Also dachte ich, ich könnte so etwas wie "einen Editor erstellen, der beim Bearbeiten von" .gitignore "einfach" Sprachname "und" Sprache ignorieren "auf nette Weise schreibt." Ist die Benutzeroberfläche nicht wie Lazygit cool?
Wenn Sie dies tun können, ist es praktisch, alle Muster einzugeben, die Sie bei der Ableitung ignorieren möchten.
Derzeit kann ich jedoch keine Editoren in diesem Format erstellen.
Ich habe eine supereinfache Implementierung wie MVP ausprobiert. Hier => vigi = vi gitignore
Wenn Sie den Befehl vigi
ausführen,
# ~~~~~~
Öffnen Sie eine solche Datei mit vim
und
.idea
# ~~~~~~
python
virtualenv
Wenn Sie so bearbeiten und vim
beenden,
.idea
# ~~~~~~
# https://www.gitignore.io/api/python,Inhalt von virtualenv
In einem solchen Zustand wird ein .gitignore
erstellt.
Übrigens, wenn Sie den Befehl vigi
in diesem Zustand ausführen, ist der Teil gitignore.io nur eine Information für die Sprache. Einfach zu bearbeiten ... denke ich.
Ein Stil, der eine temporäre Datei mit dem Namen ".gi" erstellt, bearbeitet und beim Speichern in ".gitignore" konvertiert.
import subprocess
from pathlib import Path
from subprocess import CalledProcessError, PIPE
def main():
gi_path = Path.cwd() / '.gi'
gitignore_path = Path.cwd() / '.gitignore'
try:
# Convert from ``.gitignore`` to ``.gi``
if gitignore_path.exists():
encode_gitignore(gitignore_path, gi_path)
else:
with gi_path.open('w') as fp:
fp.write(dedent(gi_template).strip())
# Spawn vim
vim_args = ['/usr/bin/vim', str(gi_path)]
vim_proc = subprocess.run(vim_args, check=True)
# Convert from ``.gi`` to ``.gitignore``
decode_gitignore(gi_path, gitignore_path)
except CalledProcessError:
pass
finally:
# Remove ``.gi``
gi_path.unlink()
Ein grober Stil, der "vim" mit "subprocess.run" aufruft und in Ordnung ist, wenn keine "CalledProcessError" -Ausnahmen vorhanden sind. Es ist einfach und gut.
.gi
nichtIch benutze try
~ finally
und werfe schließlich die .gi
-Datei weg. Wenn ein Fehler auftritt, wird .gitignore
nicht bearbeitet, daher ist es umweltfreundlich.
.gitignore
basierend auf dem MaterialDie .gi
-Datei befindet sich zu diesem Zeitpunkt normalerweise im Dateisystem, sodass Sie sie wie eine normale Datei öffnen möchten.
Stellen Sie dann die Informationen auf der Sprachseite zusammen und geben Sie sie an gitignore.io weiter.
Nur wenn der HTTP-Status 404 ist, wird die Antwort wie gewohnt gespeichert.
Dies liegt daran, dass alle Fälle, die "Informationen enthalten, die im Master nicht vorhanden sind", 404 zu sein scheinen.
Es ist das einzige, was man als ein wenig Einfallsreichtum bezeichnen kann.
def decode_gitignore(src, dest):
custom = []
online = []
with src.open() as fp:
# .Öffnen Sie die GI-Datei und trennen Sie die Vorder- und Rückseite der Begrenzung usw.
if online:
url = f'https://www.gitignore.io/api/{",".join(online)}'
req = Request(url, None, headers={'User-Agent': 'vigi'})
try:
resp = urlopen(req)
custom.append(resp.read().decode())
except HTTPError as err:
if err.code == 404:
custom.append(resp.read().decode())
raise err
with dest.open('w') as fp:
fp.write('\n'.join(custom))
Basierend auf diesem Befehl wurde vorerst der .gitignore
im vigi
-Projekt erstellt.
Ich halte es für einen Vorteil, dass die Anzahl der zum Zeitpunkt der Bearbeitung angezeigten Zeilen erheblich reduziert wird. In diesem Sinne hat er seine Arbeit als MVP richtig gemacht.
Ich weiß jedoch nicht, welche Art von Muster im Sprachmaster enthalten ist, bis ich die Konvertierung in ".gitignore" abgeschlossen habe. Wenn ich es etwas weiterentwickeln wollte, musste ich den Sprachmeister richtig aus den Musterkandidaten herausziehen. Ich weiß nicht, ob es wirklich gut ist. ~~ Vielleicht ist es für das Training in einer Sprache geeignet? ~~
[^ 1]: Es gibt eine Projektvorlage, aber bitte vergessen Sie sie. [^ 2]: Sie können es mit "Dotfiles" verwalten, aber bitte vergessen Sie dies auch
Recommended Posts