Раньше я использовал Mercurial (Hg), и было нормально делать что-то вроде на локальном ПК:
hg clone ssh://peter@hostingcompany.com/~/mysite.com
, а затем будет иметь локальную папку с именем mysite.com
, и я могу отредактировать ее содержимое, зафиксировать и сказать hg push
и отправить ее на сервер. Конечно, чтобы содержимое отображалось в «рабочем каталоге», мне нужно будет ssh
и выполнить hg up
.
С Git, если я делаю то же самое, на сервере, сделайте
git init
git add .
git commit -m "ok"
и на локальном ПК сделайте
git clone ssh://peter@hostingcompany.com/~/mysite.com
но если я отредактирую файл и git push ssh://peter@foo.com/~/mysite.com master
, он откажется от него, потому что это не «голое хранилище».
Есть ли способ
- В любом случае, нажмите Hg?
- Или, что еще лучше, нажмите на него и сделайте так, чтобы оно автоматически делало что-то вроде
hg up
- это git checkout
, чтобы контент сразу отображался на mysite.com (используя любой веб-браузер в любом месте).
Обновление:
Кажется, что обычной практикой является продвижение к голому репо ... но разве мы не можем использовать голое репо и заставить (2) работать выше? Если это практичный способ, то нам не нужно придерживаться правила «push to bare repo»?
Если есть какая-то другая причина, по-прежнему подталкивать к пустому репо и клонировать на сервере ... тогда:
если на сервере были такие каталоги, как ~/mysite.com
и ~/other_folder
и т. Д., То где должен находиться репозиторий для mysite.com
? mysite.com
- это содержимое сайта, поэтому, если я добавлю index.html
, то любой браузер в мире сможет его увидеть. Так хорошо ли создавать пустое хранилище, разрешать клонирование ~/mysite.com
с него и на локальном ПК автоматически использовать git push <path> master; ssh <path> "cd to that folder and do git checkout to update the content"
по 1 строке на локальном ПК? Будет ли линия git push ssh://peter@hostingcompany.com/~/mysite.com master; ssh ssh://peter@hostingcompany.com/~/mysite.com 'git pull; git checkout'
?