Ich versuche, Code von Github auf unseren Server zu ziehen (git pull origin master
).
Das hat vorher funktioniert. Allerdings bekomme ich jetzt folgende Fehlermeldung:
$ git pull origin master
From github.com:org-name/repo-name
* branch master -> FETCH_HEAD
Updating 8024663e..e458e5c1
fatal: path/to/file.msi: smudge filter lfs failed
Ich habe den gleichen Befehl mit ausgeführt GIT_TRACE=1
:
$ GIT_TRACE=1 git pull origin master
19:25:26.331064 git.c:371 trace: built-in: git 'pull' 'origin' 'master'
19:25:26.333947 run-command.c:350 trace: run_command: 'fetch' '--update-head-ok' 'origin' 'master'
19:25:26.334661 exec_cmd.c:116 trace: exec: 'git' 'fetch' '--update-head-ok' 'origin' 'master'
19:25:26.337625 git.c:371 trace: built-in: git 'fetch' '--update-head-ok' 'origin' 'master'
19:25:26.344457 run-command.c:350 trace: run_command: 'ssh' '[email protected]' 'git-upload-pack '\''org-name/repo-name.git'\'''
19:25:26.925565 run-command.c:350 trace: run_command: 'rev-list' '--objects' '--stdin' '--not' '--all' '--quiet'
19:25:26.937016 run-command.c:350 trace: run_command: 'rev-list' '--objects' '--stdin' '--not' '--all' '--quiet'
19:25:26.937833 exec_cmd.c:116 trace: exec: 'git' 'rev-list' '--objects' '--stdin' '--not' '--all' '--quiet'
19:25:26.941292 git.c:371 trace: built-in: git 'rev-list' '--objects' '--stdin' '--not' '--all' '--quiet'
From github.com:org-name/repo-name
* branch master -> FETCH_HEAD
19:25:26.994717 run-command.c:1130 run_processes_parallel: preparing to run up to 1 tasks
19:25:26.994880 run-command.c:1162 run_processes_parallel: done
19:25:26.995780 run-command.c:350 trace: run_command: 'gc' '--auto'
19:25:26.996735 exec_cmd.c:116 trace: exec: 'git' 'gc' '--auto'
19:25:27.000596 git.c:371 trace: built-in: git 'gc' '--auto'
19:25:27.002716 run-command.c:350 trace: run_command: 'merge' 'FETCH_HEAD'
19:25:27.003445 exec_cmd.c:116 trace: exec: 'git' 'merge' 'FETCH_HEAD'
19:25:27.006078 git.c:371 trace: built-in: git 'merge' 'FETCH_HEAD'
Updating 8024663e..e458e5c1
19:25:27.420945 run-command.c:350 trace: run_command: 'git-lfs filter-process'
19:25:27.470865 run-command.c:209 trace: exec: '/bin/sh' '-c' 'git-lfs filter-process' 'git-lfs filter-process'
trace git-lfs: run_command: 'git' version
trace git-lfs: run_command: 'git' config -l
trace git-lfs: Initialize filter-process
trace git-lfs: Read filter-process request.
trace git-lfs: Read filter-process request.
fatal: path/to/file.msi: smudge filter lfs failed
19:25:27.998635 run-command.c:42 trace: run_command: running exit handler for pid 18022
Ich habe überprüft, dass meine ssh-Anmeldeinformationen korrekt sind:
$ ssh -T [email protected]
Hi user-name! You've successfully authenticated, but GitHub does not provide shell access.
Und in der Tat weiß ich, dass die Anmeldeinformationen in Ordnung sind, weil die pull
wird die herunterbringen .gitattributes
Datei (zusammen mit anderen kleinen Dateiänderungen, die ich vorgenommen habe):
file.msi filter=lfs diff=lfs merge=lfs -text
Ich habe überprüft, dass Git LFS korrekt konfiguriert zu sein scheint:
$ git config -l
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
...
ich habe das gefunden Github-Problemund ich habe alle drei Schritte ausprobiert:
$ echo "protocol=https\nhost=github.com" | git credential fill
$ echo "protocol=https\nhost=github.com" | git credential fill | git credential reject
$ echo "protocol=https\nhost=github.com" | git credential fill | git credential approve
Im ersten Schritt wurde nach meinem Benutzernamen gefragt. Wie es heißt, scheint Git LFS also nichts zwischenzuspeichern.
Ich habe nicht viel Erfahrung mit Git LFS, und ehrlich gesagt habe ich keine Ideen mehr, wie ich dieses Problem angehen soll.
Es gibt zwei Aktionen, die ich kürzlich durchgeführt habe und die möglicherweise etwas kaputt gemacht haben:
- Ich habe einen Benutzer aus unserem Repository entfernt. Der ssh-Schlüssel des Servers gehörte dem Benutzer. Wir haben einen Bereitstellungsschlüssel hinzugefügt, aber das habe ich gelesen Git LFS unterstützte keine Bereitstellungsschlüssel (obwohl es scheint, dass die Unterstützung kürzlich hinzugefügt wurde). Also haben wir auf einen Benutzerschlüssel umgestellt. Beide Schlüssel wurden mit bestätigt
ssh -T [email protected]
Prüfung. Vielleicht gibt es trotzdem ein Authentifizierungsproblem? - Ich habe das Repository auf einen Server ohne Git LFS heruntergezogen. Ich habe es damals nicht bemerkt, aber die auf den Zielserver übertragenen Dateien sind in Ordnung. Aber vielleicht hat dies etwas im Repository kaputt gemacht?
Jede Hilfe, die Sie leisten könnten, wäre sehr willkommen.
PS – Es tut mir leid, wenn meine Anonymisierung Verwirrung stiftet. Ich habe unsere tatsächliche IP-Adresse durch ersetzt X.X.X.X
; unser Organisationsname mit org-name
; unser Repo-Name mit repo-name
; unser Github-Benutzer mit user-name
; den Dateinamen mit file.msi
; und noch ein paar Sachen.
BEARBEITEN 16.05.17: Sprache hinzugefügt, um deutlich zu machen, dass es früher funktioniert hat … und dass ich es kaputt gemacht habe.