Ich weiß, dass nicht möglich , Mercurial-Repositorys über HTTP (S) remote zu erstellen, zum Beispiel:
%Vor%oder
%Vor%Aber was ist der Grund? Sicherheitsprobleme? Keine Notwendigkeit dafür? Einfach weil es noch niemand implementiert hat?
Begründung für diese Frage: In meiner Firma teilen wir die meisten Ressourcen über HTTPS, d. h. Zugriffsberechtigungen werden nur von Apache verwaltet und normale Benutzer können sich nicht über SSH auf dem Server anmelden. Das ist einfach perfekt, solange nur Repositories bedient werden müssen (zu diesem Zweck sind wir mit hgwebdir.cgi
zufrieden). Wir möchten jedoch auch die Remote-Erstellung von Repos ermöglichen, ohne dass zusätzliche / gepatchte Skripts auf dem Server und zusätzliche Tools auf Clients verwaltet werden müssen.
Um es klar zu sagen: Diese Frage erfordert keine Lösung für unser spezielles Problem, sondern aus dem Grund, warum Mercurial diese Funktion nicht selbst unterstützt.
AKTUALISIEREN
Hier ist eine technische Beschreibung der Situation, an die ich denke. Angenommen, hgwebdir.cgi
bietet eine Sammlung von Repositories in /path/to/repos
at https://.../repos
(mit aktiviertem Push). Jeder Benutzer, der auf diese URL zugreifen darf (wie in Apache konfiguriert), kann Changesets ziehen und übertragen, was bedeutet, dass hgwebdir.cgi
(und somit hg
) editiert und Dateien unterhalb von /path/to/repos
erstellt. Nun, was ist die Schranke, wenn hgwebdir.cgi
neue Repositories unterhalb von /path/to/repos
erstellen?
Ich denke, der Grund ist, dass das Hinzufügen von Unterstützung für das Erstellen von Repositories eine Menge Gepäck mit sich bringt:
Wenn Sie Repositories erstellen können, erwarten Sie, dass Sie sie löschen können. Das mag zwar einfach erscheinen, aber es wäre ein großer Schritt von der sicheren Art und Weise entfernt, in der Mercurial normalerweise funktioniert - es gibt im Standard-Mercurial keine destruktiven Befehle.
Leute würden auch die .hg/hgrc
Dateien bearbeiten wollen, um die Beschreibung und Kontaktinformationen zu setzen - der Standard Mercurial ändert niemals die Konfigurationsdateien, das wäre also wieder eine neue Sache.
Personen möchten auch den Zugriff der Benutzer auf die neuen Repositories verwalten - das bedeutet, dass Sie .htaccess
-Dateien oder das Äquivalent für andere Webserver bearbeiten müssen.
... und so weiter. Die Implementierung dieser "kleinen" Funktion wird sich für viele zusätzliche Feature-Anfragen öffnen und wir haben nur wenige Mercurial-Entwickler, die auch sägeartige Web-Entwickler sind.
Allerdings gibt es jetzt eine ausgezeichnete Open-Source-Lösung: Kallithea gibt Ihnen einen "Mini-Bitbucket", den Sie auf Ihrem Rechner einsetzen können eigener Server. Es wird alles oben genannte tun. Ich würde das auf meinem Server installieren, wenn ich etwas mächtigeres als plain hgweb.cgi
brauche. Es unterstützt sowohl Mercurial als auch Git.
Soweit ich weiß, erlaubt keine der SCM-Alternativen die native Erstellung von Remote-Repositories. SVN, CVS, Git, et al.
Das ist normalerweise die Aufgabe eines Hosting-Anbieters: SourceForge, Google Code, BitBucket. Alle implementieren die Repository-Erstellung zusätzlich zu ihrer Authentifizierungsinfrastruktur.
Zum Beispiel ist Debians Mercurial-Hosting auf Debian-Entwickler beschränkt, und um ein neues Repository zu erstellen, müssen Sie sich über SSH anmelden an den Server und erstellen Sie das Repository in Ihrem lokalen Home-Ordner, ähnlich wie Apache public_html
Verzeichnis .
Verschiedene Antworten (einschließlich Ihrer eigenen) geben einige ziemlich gute Gründe, warum die Funktionalität nicht vorhanden ist (Trennung von Bedenken meist), aber wenn Sie wirklich hinzufügen möchten, könnten Sie dies mit nur ein oder zwei Zeilen Shell tun. Hier ist ein abscheulich unsicheres Beispiel, das ich vor einiger Zeit gegeben habe, um zu zeigen, wie man diese Funktionalität in high trust Umgebungen hinzufügt: Remote-Repository-Erstellung in Mercurial über HTTP