Составлять команды Mercurial из TortoiseHg и отправлять их на удаленный Linux с помощью ssh

Составлять команды Mercurial из TortoiseHg и отправлять их на удаленный Linux с помощью ssh

я используюВерстак TortoiseHgдля управления репозиториями на моей локальной машине Windows, и мне нравится, как TortoiseHg составляет команды на основе щелчков, которые я делаю с помощью графического интерфейса.

Но я знаю, как использовать TortoiseHg только для управления локальными репозиториями Windows, а не для удаленных клиентов Unix Mercurial, находящихся на веб-сервере.

Можно ли создать туннель через SSH и отправлять команды на веб-сервер Unix? Я хотел бы управлять репозиторием удаленно на моем веб-сервере с помощью TortoiseHg.

решение1

Нет, это невозможно: единственные «команды», которые вы можете отправлять по SSH (и HTTPS), — это hg pushи hg pull.

На самом деле они не отправляются как «команды», вместо этого Mercurial использует собственный протокол, который позволяет клиенту запрашивать у удаленного сервера несколько вещей, например: «У вас есть этот набор изменений?», «Каковы головы веток?» и «Пожалуйста, примите этот пакет!».

Когда вы используете SSH, ваш клиент Mercurial создаст туннель SSH и запустится hg serve --stdioна удаленном хосте. Эта hg serveкоманда — то, что говорит протокол Mercurial, о котором я говорил выше. Хостинговые среды, такие как Bitbucket, заблокированы, поэтому этотолькокоманду, которую вы можете выполнить через SSH — они не хотят, чтобы вы выполняли произвольные команды на их серверах!

Что касается управления удаленным репозиторием натвой собственныйвеб-сервер: Вам необходимо войти в систему через SSH и создать пустой репозиторий на вашем сервере Unix:

$ hg init my-website

Затем вы можете выполнить push на сервер с локальной машины:

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

Поскольку вы говорите об управлении веб-сайтом, вы можете добавить

[hooks]
changegroup = hg update

в .hg/hgrcфайл в удаленном репозитории: это заставит Mercurial запускаться hg updateпосле каждой отправки в этот репозиторий. Это означает, что рабочая копия будет обновлена ​​последними файлами, и ваш веб-сервер сможет предоставить их миру.

Связанный контент