Schnellerer HTTP-Push mit nur git - webDAV ist nicht erforderlich
Die neue "smart-http" -Unterstützung seit git 1.6.6. Mit der neuen Methode kann das gesamte Paket auf einmal und nicht als einzelne Dateien übertragen werden.
Sie können gitweb auch verwenden, um an derselben Stelle URLs zum Aufrufen bereitzustellen.
Hinweis: Da der Zugriff von Apache gesteuert wird, können Sie dem Setup für jedes Repository beliebige Authentifizierungsanforderungen (htaccess oder ldap usw.) hinzufügen.
Diese Antwort setzt voraus, dass Sie den Remote-Server besitzen und die http-Unterstützung hinzufügen / korrigieren möchten.
ZUERST: Überprüfen Sie die Apache-Protokolle. Es ist wahrscheinlich, dass eine Berechtigung verweigert wurde / kein Fehler gefunden werden konnte, wenn Apache versucht, die git-http-gesicherten CGI-Skripte auszuführen.
Hinzufügen von HTTP-Unterstützung zu Git
Erstellen Sie einfach eine neue git_support.conf-Datei und fügen Sie sie in Apache ein (fügen Sie die include-Anweisung in httpd.conf hinzu).
#
# Basic setup for git-http-backend
#
SetEnv GIT_PROJECT_ROOT /opt/git_repos
SetEnv GIT_HTTP_EXPORT_ALL
SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER #IMportant !!! This could be your problem if missing
<Directory /opt/git> # both http_backend and gitweb should be somewhere under here
AllowOverride None
Options +ExecCGI -Includes #Important! Lets apache execute the script!
Order allow,deny
Allow from all
</Directory>
# This pattern matches git operations and passes them to http-backend
ScriptAliasMatch \
"(?x)^/git/(.*/(HEAD | \
info/refs | \
objects/(info/[^/]+ | \
[0-9a-f]{2}/[0-9a-f]{38} | \
pack/pack-[0-9a-f]{40}\.(pack|idx)) | \
git-(upload|receive)-pack))$" \
/opt/git/libexec/git-core/git-http-backend/$1
# Anything not matched above goes to displayable gitweb interface
ScriptAlias /git /opt/git/cgi-bin/gitweb.cgi/
Das Ergebnis ist die Fähigkeit zum Drücken / Ziehen:
me@machine /tmp/eddies $ git pull
Already up-to-date.
me@machine /tmp/eddies $ touch changedFile
me@machine /tmp/eddies $ git add .
me@machine /tmp/eddies $ git commit -am"commiting change"
[master ca7f6ed] commiting change
0 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 changedFile
me@machine /tmp/eddies $ git push origin master
Counting objects: 3, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 239 bytes, done.
Total 2 (delta 1), reused 0 (delta 0)
To http://mysecretdomain.com/git/eddies
0f626a9..ca7f6ed master -> master
Und Sie können diese Änderungen online durchsuchen.
Quelle:
http://repo.or.cz/w/alt-git.git?a=blob_plain;f=gitweb/README
http.receivepack
.