2012-03-27 16 views
1

Ich versuche git auf meinem eigenen Server einzurichten und mein Projekt dort mit capistrano zu pushen.nameofrepo.git scheint kein git repository zu sein

es sagt noch

fatal: '/home/gitolite/repositories/iminrails.git' nicht zu erscheint eine Git-Repository sein, aber ich kann iminrails.git in Verzeichnis-Repositories auf dem Server sehen. So versuchte ich verschiedene Prozess, wie ich meinen Repo auf Server schieben, aber ich bekomme immer noch diesen Fehler.

[email protected]:/var/www/iminrails$ scp -r /tmp/iminrails.git [email protected]:/home/gitolite/repositories/ 
Enter passphrase for key '/home/ofer/.ssh/id_rsa': 
bad command: scp -r -t -- /home/gitolite/repositories/ 
lost connection 
[email protected]:/var/www/iminrails$ git push origin master:refs/heads/master 
Enter passphrase for key '/home/ofer/.ssh/id_rsa': 
fatal: '/home/gitolite/repositories/iminrails.git' does not appear to be a git repository 
fatal: The remote end hung up unexpectedly 
+0

Ihr erster Befehl selbst versagt ausführen, bevor Sie zu drücken versuchen. Das sollte vor dem Push-Fehler behoben werden. – JoePasq

+0

Versuchen Sie, mit 'ssh' auf den Server zuzugreifen und das Repository mit' git init' zu erstellen, um zu bestätigen, dass Sie über diese Berechtigungen verfügen. –

Antwort

0

Whe Sie ssh mit einem gitolite-Konto usng, erhalten Sie eine ssh configure verwenden forced command zu verwenden. Siehe
Gitolite and ssh

Wenn Sie in der Datei authorized_keys suchen Sie Einträge wie diese sehen werde (I abgehackt die Enden natürlich, sie sind ziemlich lange Linien):

command="[path]/gl-auth-command sitaram",[more options] ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA18S2t... 
command="[path]/gl-auth-command usertwo",[more options] ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEArXtCT... 

Zuerst wird herausgefunden, welche der öffentlichen Schlüssel in dieser Datei mit der eingehenden Anmeldung übereinstimmen. Das ist Kryptosachen, und ich werde nicht darauf eingehen.
Sobald die Übereinstimmung gefunden wurde, wird der in dieser Zeile angegebene Befehl ausgeführt. Wenn ich mich beispielsweise anmelde, würde [path]/gl-auth-command sitaram laufen.
So ist die erste Sache zu beachten, dass solche Benutzer nicht "Shell-Zugriff" bekommen, was gut ist!

Bevor Sie den Befehl ausführen, richtet sshd jedoch eine Umgebungsvariable namens SSH_ORIGINAL_COMMAND ein, die den tatsächlichen Git-Befehl enthält, den Ihre Workstation gesendet hat. Dies ist der Befehl, der ausgeführt würde, wenn Sie nicht den Befehl = Teil in der autorisierten Schlüsseldatei hätten.

Die Idee ist einfach:

  • keine interaktive Shell-Zugriff
  • git Befehl nur (so Ihre scp Befehl nicht ein git-Befehl ist), es wird abgelehnt.

Wenn Sie eine vorhandene lokale Git-Repo zu einem entfernten gitolite Server kopieren müssen, finden Sie unter "moving pre-existing repos into gitolite"

let es als brandneue Repo erstellen gitolite wie im Abschnitt auf "adding users and repos".

CD zum Klon auf Ihrer Workstation.
Stellen Sie sicher, dass alle Zweige korrekt sind und keine zusätzlichen Einträge, "Temp" -Zweige usw.Vorhanden sind

nun diese beiden Befehle

git push --all [email protected]:reponame 
git push --tags [email protected]:reponame 
Verwandte Themen