Ich weiß, dass es möglich ist, die Kasse mit dem Pfad/zu/Datei abzurufen und dann zu verwenden, um diese bestimmte Datei herunterzuladen.
Mein Problem ist, dass ich eine Datenobergrenze von 1 MB pro Tag habe und git fetch alle Daten trotzdem herunterlädt, auch wenn sie nicht auf Disc gespeichert werden, bis ich git checkout verwende. Ich habe meine Daten trotzdem verwendet
Ist mein Verständnis davon, wie git fetch/checkout richtig ist? Gibt es eine Möglichkeit, eine bestimmte Datei nur herunterzuladen, um zu sehen, ob es eine neue Version gibt, bevor Sie mit dem Download fortfahren?

ja2142
Gitlab hat dafür eine Rest-API.
Sie können mit curl eine Datei aus dem Repository abrufen:
curl https://gitlab.com/api/v4/projects/:id/repository/files/:filename\?ref\=:ref
Zum Beispiel:
curl https://gitlab.com/api/v4/projects/12949323/repository/files/.gitignore\?ref\=master
Wenn Ihr Repository nicht öffentlich ist, müssen Sie auch ein Zugriffstoken bereitstellen, indem Sie hinzufügen --header 'Private-Token: <your_access_token>'
.
Verbindungen:
Sie können hier überprüfen, wie Sie die Repository-API-ID finden.
API-Dokumentation
Mehr zu Token
Da ist auch ein Python-Bibliothek die diese API verwendet.
Beachten Sie, dass dies eine GitLab-spezifische Lösung ist und nicht für andere Hostings funktioniert.
Um die andere Antwort zu erweitern, ist es (jetzt? Ich weiß nicht, wann diese Funktion hinzugefügt wurde) möglich, nur eine Rohdatei anstelle eines JSON mit einer Base64-Codierung der Datei zu erhalten.
Von dem Dokumentation:
Endpunkt: GET /projects/:id/repository/files/:file_path/raw
Beispiel:
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/13083/repository/files/path%2Fto%2Ffile%2Efoo/raw?ref=master"
Beachten Sie, dass in dem Beispiel der vollständige Pfad zur Datei URL-codiert ist und zu path/to/file.foo führt

Rubén Pozo
Verwenden von python-gitlab:
#!/usr/bin/python3
import gitlab
import sys
def download_file(host, token, project_name, branch_name, file_path, output):
try:
gl = gitlab.Gitlab(host, private_token=token)
pl = gl.projects.list(search=project_name)
for p in pl:
if p.name == project_name:
project = p
break
with open(output, 'wb') as f:
project.files.raw(file_path=file_path, ref=branch_name, streamed=True, action=f.write)
except Exception as e:
print("Error:", e)
num_arguments = len(sys.argv)
if num_arguments < 6:
print('Usage: ./download-gitlab-file.py host token project_name branch_name file_path output')
else:
download_file(
sys.argv[1],
sys.argv[2],
sys.argv[3],
sys.argv[4],
sys.argv[5],
sys.argv[6]
)
Gitlab-Beispiel
Dies funktioniert für mich auf einem lokalen Gitlab:
curl http://mylocalgitlab/MYGROUP/-/raw/master/PATH/TO/FILE.EXT -o FILE.EXT
9988300cookie-checkWie lade ich eine einzelne Datei von GitLab herunter?yes
Mögliches Duplikat von How to sparsely checkout only one single file from a git repository?
– Thomas Weller
8. Juli 2019 um 22:44 Uhr
@ThomasWeller es ist ein anderes Problem.
– Benutzer9409752
8. Juli 2019 um 23:05 Uhr