PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Push Abort Mercurial Repository on Debian Server



Twinhand
15.01.16, 10:02
Hi,

ich habe auf einem Debianserver eine Redmine-Installation auf der es möglich ist verschiedene Repositories anzulegen. (SVN, Git, Mercurial).
Die Authentification finde über die Userdatenbank statt. Das funktioniert auch alles prima. Es gibt jedoch ein Problem. Es ist mir nicht möglich Inhalt über http/https auf Mercurial-Repositories zu pushen.

Versuch ich zu pushen bekomme ich folgenden Fehler : abort: destination does not support push

(Push per SSH ist leider unerwünscht)

Die Fehlermeldung ist relativ klar. Jedoch bin ich der Meinung, dass ich das pushen bereits erlaubt habe:

Die Mecurial Repositories liegen im Verzeichnis /var/lib/mercurial.

Neben der Mercurial-Repos sind heir folgende Dateien enthalten

hgweb.cgi

#!/usr/bin/env python
#
# An example hgweb CGI script, edit as necessary
# See also http://mercurial.selenic.com/wiki/PublishingRepositories

# Path to repo or hgweb config to serve (see 'hg help hgweb')
config = "/var/www/hg/hgweb.config"

# Uncomment and adjust if Mercurial is not installed system-wide:
#import sys; sys.path.insert(0, "/path/to/python/lib")

# Uncomment to send python tracebacks to the browser if an error occurs:
#import cgitb; cgitb.enable()

from mercurial import demandimport; demandimport.enable()
from mercurial.hgweb import hgweb, wsgicgi
application = hgweb(config)
wsgicgi.launch(application)


hgweb.config

[paths]
/ = /var/lib/mercurial/**

In den Repository Ordnen selbst ist eine hgrc Datei enthalten mit welcher man unter anderem das pushen von content (erlauben können sollte).

Der Inhalt der hgrc des Testrepos seht ihr hier:


[web]
allow_push = *
push_ssl = false

[largefiles]
usercache = /var/hg.largefiles

[hooks]
pretxnchangegroup = /var/mercurial/.hookscripts/f90_form.py

[extensions]
bookmarks =


Außerdem steht in in dem Ordner /etc/mercurial ebenfalls eine hgrc Datei welche die globale config für die Repos enthalten soll.
Der Inhalt ist folgender :


# system-wide mercurial configuration file
# See hgrc(5) for more information
[trusted]
users = www-data
groups = www-data

[web]
allow_push = *
push_ssl = false

[largefiles]
usercache = /var/hg.largefiles

[hooks]
pretxnchangegroup = /var/mercurial/.hookscripts/f90_form.py

[extensions]
bookmarks =

Zusätzlich gibt es das Verzeichnis hgrc.d. Die Dateien und deren Inhalt befinden sich im Anhang


Zusätzlich dazu habe ich die oben genannten hgweb.cgi und hgweb.config nocht in einer Verzeichnis namens /var/www/hg/ kopiert, weil besagtes Verzeichnis im Guide genutzt wurde (nur um sicher zu gehen).


Leider ergab sich keine Veränderung. Und das pushen wird immernoch nicht durchgeführt.

Die Leute die das nutzen möchten auch nicht auf einen anderen Repository-Typ umsteigen.

Ich weiß nicht wo ich noch nach einer Lösung suchen soll. Ich hoffe jemand weißt eine Antwort.

Vielen Dank im voraus.

Twinhand

marce
15.01.16, 10:59
Ich kenn' das System nicht, aber hast Du das schon gefunden / gesehen / getestet:
http://stackoverflow.com/a/2565865

... und es gibt sicherlich irgendwo ein Serverlogfile, in dem man evtl. ein wenig mehr Infos erhält.

Twinhand
15.01.16, 11:45
Hallo, danke für die Antwort. Ja diesen Eintrag kenne ich. Ich habe mcih auch daran gehalten. Die hgweb.cgi ScriptAlias /mercurial(.*) /var/lib/mercurial/hgweb.cgi$1 so in meiner Apache Seiten-Konfiguration. Es ergibt sich kein Unterschied.
Die Logdatei von Mercurial die von Apache angelegt wird gibt (zumindest mir) keine Hinweise:

[15/Jan/2016:12:47:11 +0100] "GET /repoX/.hg/store/00changelog.i HTTP/1.1" 401 858 "-" "mercurial/proto-1.0"
130.83.152.212 - userX [15/Jan/2016:12:47:12 +0100] "GET /repoX/.hg/store/00changelog.i HTTP/1.1" 200 98458 "-" "mercurial/proto-1.0"

marce
15.01.16, 11:58
es gibt sicherlich auch ein Error-Log - was steht denn da? Ach ja - [code]-Tags vereinfachen das Lesen.

401 sagt eigentlich, daß irgendwo was mit dem Auth. nicht stimmt.

Aber wie gesagt, ich kenne das System nicht.

Twinhand
15.01.16, 12:22
Versuche ich erneut zu pushen und überprüfe den Errorlog, so wird nichts eingetragen.
Die Authentifizierung ist ebenfalls beim Klonen des Repos vom Server nötig (und funktioniert). Ich glaube nicht das etwas mit dem Authentifizierungssystem nicht stimmt.
Ich glaube schlicht das die "allow push" Funktion nicht gelesen oder nicht umgesetzt wird. Ich weiß allerdings nicht wieso, denn soweit ich aus dem Guide entnehmen kann, gibt es nicht viele Anlaufstellen und es sollte eigentlich laufen.