Magit erkennt Git Repo nicht über eine SSH-Verbindung

10

Ich verwende ssh, um eine Verbindung zu einem Remote-Server herzustellen. Auf dem Server gibt es ein Git-Repo namens MRFLSSVM. Wenn ich jedoch Folgendes ausführe magit-status:

/ssh:qmServer:/home/Chang/qmCodeLab/MRFLSSVM/

Magit bittet mich darum Create repository in /ssh:qmServer:/home/Chang/qmCodeLab/MRFLSSVM/?.

Irgendeine Idee, wie man Magit dieses Repo erkennen lässt? (Ich habe git 2.10.0 bereits unter / usr / local / git installiert und mein System (CentOS) so konfiguriert, dass es von Update-Alternativen verwendet wird.)

-----------Bearbeiten------------------------------

Error (magit): Magit requires Git >= 1.9.4, you are using 1.8.3.

If this comes as a surprise to you, because you do actually have
a newer version installed, then that probably means that the
older version happens to appear earlier on the `$PATH'.  If you
always start Emacs from a shell, then that can be fixed in the
shell's init file.  If you start Emacs by clicking on an icon,
or using some sort of application launcher, then you probably
have to adjust the environment as seen by graphical interface.
For X11 something like ~/.xinitrc should work.

If you use Tramp to work inside remote Git repositories, then you
have to make sure a suitable Git is used on the remote machines
too.

Error (magit): Magit requires Git >= 1.9.4, but on /ssh:qmServer: the version is 1.8.3.

If multiple Git versions are installed on the host then the
problem might be that TRAMP uses the wrong executable.

First check the value of `magit-git-executable'.  Its value is
used when running git locally as well as when running it on a
remote host.  The default value is "git", except on Windows
where an absolute path is used for performance reasons.

If the value already is just "git" but TRAMP never-the-less
doesn't use the correct executable, then consult the info node
`(tramp)Remote programs'.

Dieses Problem scheint darin zu trampliegen, dass auf dem Remote-Server nicht das richtige Git verwendet wird. Ich habe versucht zu ändern, magit-git-executablein usr/local/git/bin/gitwelchen Pfad sich sowohl mein lokaler als auch mein entfernt installierter Git befinden. Das funktioniert aber immer noch nicht.

Irgendwelche Ideen, um das zu lösen? Vielen Dank!

Raumfahrt
quelle
1
Funktioniert bei mir. Ich vermute, dass die Version von Git auf dem Remote-Server zu alt ist. Magit 2 erfordert eine Mindest-Git-Version von 1.9.4.
Phils
Beachten Sie, dass Magit over Tramp wahrscheinlich erheblich langsamer ist als eine lokale Instanz. In diesen Fällen ziehe ich es vor, auf dem Remote-Server in einem Terminal zu ssh und Emacs (im Terminal) auf diesem Server auszuführen. Dann sind alle Git-Operationen lokal und schnell.
Phils
Nun, ich denke, Ihr Hauptproblem ist, dass der Remote-Server nicht über eine ausreichend aktuelle Version von Git verfügt. Unabhängig davon, wo Sie Emacs ausführen, benötigt Magit 2 diesen Server, um Git 1.9.4 oder höher auszuführen. Magit 1 ist immer noch verfügbar und funktioniert mit viel älteren Versionen von Git. Sie können also versuchen, dies stattdessen zu verwenden. (Ich kann mich jedoch nicht erinnern, ob Magit 1 über Tramp funktioniert.)
Phils
@phils Ich habe das Git des Servers auf 2.8.1 aktualisiert, aber es funktioniert immer noch nicht. Wie finde ich das Problem? Ich bin ein Spacemacs-Benutzer. Hat das etwas mit Spacemacs zu tun?
Raumfahrt
Das scheint mir wirklich unwahrscheinlich, aber ich weiß es nicht. Sie müssen testen und herausfinden, denke ich. Es tut mir leid zu hören, dass das nicht funktioniert hat. Ich war ziemlich sicher , dass das Problem war ( war es eine ältere Version als 1.9.4 ursprünglich ausgeführt wird ?). Wenn Sie dies noch nicht getan haben, stellen Sie sicher, dass Sie Emacs vor dem Testen neu starten, nur für den Fall, dass dies einen Unterschied macht.
Phils

Antworten:

6

Fehler (magit): Magit erfordert Git> = 1.9.4, Sie verwenden 1.8.3.

Ich habe git 2.10.0 bereits unter / usr / local / git installiert

Die Liste der Verzeichnisse, in denen auf Remote-Hosts nach ausführbaren Dateien gesucht werden soll, wird durch die Option gesteuert tramp-remote-path. Es beginnt mit einem Element "Was die Fernbedienung mir gesagt hat, was ich verwenden soll", aber meiner Erfahrung nach funktioniert das nicht so gut. Insbesondere werden alle Änderungen, $PATHdie Sie an der Konfigurationsdatei Ihrer Shell vorgenommen haben, ignoriert , glaube ich.

Also, in Ihrer init - Datei, setzte /usr/local/git/binvor /usr/binin tramp-remote-path:

(require 'tramp)
(push "/wherever/git/is/" tramp-remote-path)
Tarsius
quelle
0

Wenn Ihre Git-Version in Ordnung ist, liegt das Problem möglicherweise an der Konfiguration dieses Git-Repositorys, z. B. an einem Syntaxfehler in .git/config.

Um dies zu überprüfen, öffnen Sie eine Shell auf dem Repository-Computer und -Verzeichnis und geben Sie ein git status

Stéphane
quelle