2017-05-15 3 views
3

Ich versuche, Code von Github (git pull origin master) auf unseren Server zu ziehen.Git ziehen - Schmierfilter lfs fehlgeschlagen

Dies funktionierte vorher. Aber jetzt bin ich die folgende Fehlermeldung empfangen:

$ 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 

lief ich den gleichen Befehl mit 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 meine ssh Anmeldeinformationen bestätigt korrekt sind:

$ ssh -T [email protected] 
Hi user-name! You've successfully authenticated, but GitHub does not provide shell access. 

Und in der Tat, ich weiß, die Anmeldeinformationen sind in Ordnung, weil die pull wird die Datei .gitattributes herunterbringen (zusammen mit anderen kleinen Dateiänderungen, die ich getan habe):

file.msi filter=lfs diff=lfs merge=lfs -text 

Ich überprüfte Git LFS erscheint korrekt konfiguriert werden:

$ 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 diesen Github issue gefunden, und ich versuchte, alle drei Schritte:

$ 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 

Der erste Schritt für meinen Benutzernamen gefragt . Also, wie es heißt, es scheint nicht, dass Git LFS irgendetwas zwischenspeichert.

Ich habe nicht viel Erfahrung mit Git LFS, und ehrlich gesagt, habe ich keine Ideen, wie Sie dieses Problem anzugehen.

Es gibt zwei Aktionen ich vor kurzem nahm die gebrochen etwas haben könnte:

  1. ich einen Benutzer aus unserem Repository entfernt. Der ssh-Schlüssel des Servers gehörte dem Benutzer. Wir haben einen Implementierungsschlüssel hinzugefügt, aber ich habe gelesen, dass Git LFS didn't support deployment keys (obwohl es scheint, dass Unterstützung kürzlich hinzugefügt wurde). Also haben wir zu einem Benutzerschlüssel gewechselt. Beide Schlüssel wurden mit dem ssh -T [email protected] Test bestätigt. Vielleicht gibt es ein Problem mit der Authentifizierung?
  2. Ich zog das Repository auf einen Server ohne Git LFS. Ich habe es zu dem Zeitpunkt nicht bemerkt, aber die Dateien wurden auf den Zielserver übertragen. Hat dies jedoch etwas im Repository zerstört?

Jede Hilfe, die Sie verleihen könnten, würde sehr geschätzt werden.

PS - Es tut mir leid, wenn meine Anonymisierung Verwirrung verursacht. Ich ersetzte unsere tatsächliche IP-Adresse durch X.X.X.X; unser Organisationsname mit org-name; unser Repo Name mit repo-name; unser Github-Benutzer mit user-name; der Dateiname mit file.msi; und noch ein paar Dinge.

EDIT 5/16/17: Sprache hinzugefügt, um klar zu machen, dass es früher funktioniert hat ... und dass ich es kaputt gemacht habe.

Antwort

1

In meinem Fall wurde das SSH-authentifizierte Repository aktualisiert, um LFS von einem anderen Client zu verwenden und auf meiner Seite wusste Git-LFS nichts über die SSH Remote-URL.Was ich tat, um es zu beheben wurde der folgende:

$ git config lfs.url $(git config remote.origin.url) 

(Wenn Ihr Fern origin dann zu Ihrer Remote-Name nicht genannt wird, geändert werden.)

Run

$ git config lfs.url 

zu bestätigen, dass es funktioniert enthalten in der Tat eine SSH-URL und nicht irgendeine HTTP/HTTPS-URL.

Dann können Sie

$ git pull 

oder wenn Sie vor vermasselt und master und orgin/master haben irgendwie auseinander wie es der Fall war für mich dann könnten Sie zu git checkout -fB master origin/master benötigen (Vorsicht und sorgfältig ausführen!).

Siehe auch: https://github.com/git-lfs/git-lfs/issues/2661#issuecomment-335903332

+0

Danke für die Antwort @grandchild. Am Ende haben wir nur eine Stunde oder zwei nehmen die binären Dateien auf den Server zu bewegen mit 'scp', und wir arbeiten einen Dateiserver-System wie S3 statt Git LFS auf die Umsetzung. Ich werde weitermachen und dies als die Antwort markieren, da es ein ähnliches Problem für Sie gelöst hat. Ich bin irgendwie herumgelaufen, haha. Danke für die Antwort! – Jack