
я используюВерстак 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
после каждой отправки в этот репозиторий. Это означает, что рабочая копия будет обновлена последними файлами, и ваш веб-сервер сможет предоставить их миру.