Erstellen Sie Mercurial-Befehle von Toroise-Hg und senden Sie sie mit ssh an Remote-Linux

808
steampowered

Ich verwende ToroiseHg Workbench zum Verwalten von Repositorys auf meinem lokalen Windows-Computer. Ich mag es, wie TortoiseHg die Befehle auf der Grundlage von Klicks erstellt, die ich mithilfe der GUI mache.

Ich weiß jedoch nur, wie TortoiseHg für die Verwaltung lokaler Windows-Repositorys verwendet wird, nicht für Remote-Unix-Mercurial-Clients, die sich auf einem Webserver befinden.

Ist es möglich, SSH zu tunneln und Befehle an einen Unix-Webserver zu senden? Ich möchte ein Repo auf meinem Webserver mit TortoiseHg remote verwalten.

0
Die übliche Arbeitsweise mit DVCS-Repositorys besteht darin, das Repo "hg clone" auf Ihren Computer zu kopieren und dann "hg push" neue Commits an den Server zurückzusenden. grawity vor 12 Jahren 0
Ich verwende bitbucket zum Speichern der Repos und möchte die neuesten Commits von bitbucket auf den Webserver ziehen. Muss ich über die Befehlszeile des Webservers ziehen oder gibt es eine Möglichkeit, Befehle vom TortoiseHg-Windows-Client an meinen Webserver zu senden? Filezilla sendet Befehle, die auf dem Server ausgeführt werden sollen. steampowered vor 12 Jahren 0

1 Antwort auf die Frage

2
Martin Geisler

Nein, das ist nicht möglich: Die einzigen "Befehle", die Sie über SSH (und HTTPS) senden können, sind hg pushund hg pull.

Sie werden nicht wirklich als "Befehle" gesendet. Stattdessen verwendet Mercurial ein eigenes Protokoll, das es einem Client ermöglicht, einen Remote-Server nach einigen Dingen zu fragen, wie "Haben Sie diese Änderungsmenge?", "Was sind die Zweigköpfe?" Und msgstr "Bitte akzeptieren Sie dieses Bundle!"

Wenn Sie SSH verwenden, erstellt Ihr Mercurial-Client einen SSH-Tunnel und startet hg serve --stdioauf dem Remote-Host. Dieser hg serveBefehl spricht das Mercurial-Drahtprotokoll an, über das ich oben spreche. Hosting-Umgebungen wie Bitbucket sind gesperrt, sodass dies der einzige Befehl ist, den Sie über SSH ausführen können. Sie möchten nicht, dass Sie beliebige Befehle auf ihren Servern ausführen!

Zum Verwalten eines Remote-Repositorys auf Ihrem eigenen Webserver: Sie müssen sich mit SSH anmelden und ein leeres Repository auf Ihrem Unix-Server erstellen:

$ hg init my-website 

Dann können Sie von Ihrem lokalen Computer aus auf den Server pushen:

$ hg push ssh://your-server.com/path/from/home-dir/to/my-website 

Da Sie über das Verwalten einer Website sprechen, möchten Sie möglicherweise hinzufügen

[hooks] changegroup = hg update 

in die .hg/hgrcDatei im Remote-Repository: Mercurial wird hg updatenach jedem Push in dieses Repository ausgeführt. Dies bedeutet, dass die Arbeitskopie mit den neuesten Dateien aktualisiert wird, sodass Ihr Webserver diese der Welt zur Verfügung stellen kann.

OK danke. Sieht aus, als müsste ich in der Befehlszeile ein Skript erstellen, um Updates auf den Server zu laden. Kein großes Problem mit dem Skript, wollte nur sicherstellen, dass es keine Möglichkeit gibt, TortoiseHg zu verwenden. steampowered vor 12 Jahren 0
Dies kann etwas spät sein, aber wenn Sie das .hg-Verzeichnis und seinen Inhalt von einem externen Webbrowser aus sehen können, kann jemand einen "hg-Klon" Ihrer Site erstellen, wenn ich mich nicht irre. BrainStorm.exe vor 9 Jahren 0