html текст
All interests
  • All interests
  • Design
  • Food
  • Gadgets
  • Humor
  • News
  • Photo
  • Travel
  • Video
Click to see the next recommended page
Like it
Don't like
Add to Favorites

Размещаем код сайта через Git: просто и легко tutorial



С того самого момента, когда я начал изучать Git, меня волновали методы практического применения этой DCVS, делающие работу с использованием этой DCVS удобней и проще, в частности, когда нет необходимости, возможности и желания взаимодействовать с какими-то удаленными сервисами вроде GitHub или Beanstalk, и, в целом, делиться кодом с посторонними людьми. Так как большую часть времени я использую Git при разработке различных веб-ориентированных систем, первым рецептом, которым я хочу сегодня с вами поделиться, будет по-настоящему удобный и простой способ выгрузки исходных кодов и ресурсов сайта на любой сервер, на котором установлен Git.

В отличии от некоторых способов решения подобных проблем, в том числе описанных здесь на хабре, предлагаемый мною способ требует всего лишь одного удаленного репозитория на сервере, всего лишь одного хука и не требует ничего другого кроме самого Git. Конечно, он, может быть, не даёт всей гибкости, что дают другие методы, но это некоторое отсутствие гибкости, по-моему, полностью компенсируется простотой и удобством применения этого метода. Этот метод будет особенно удобен для небольших проектов.

На целевом сервере


Первым делом на целевом сервере в корне или, лучше, на уровень ниже корня сайта, создадим пустой репозитарий:

~/www$ git init
Initialized empty Git repository in /home/example.com/www/.git/

Так как мы работаем не с голым (bare) репозитарием, обязательно разрешим перезапись текущей ветки:

~/www$ git config receive.denyCurrentBranch ignore

Наконец, создадим хук .git/hooks/post-receive, который и будет делать всю работу:

#!/bin/sh
cd ..
GIT_DIR='.git'
git reset --hard

Разрешим выполнение для этого хука:

~/www$ chmod +x .git/hooks/post-receive

Локально у разработчика


Затем расскажем локальному репозитарию о том, куда следует делать выгрузку:

$ git remote add --track master origin ssh://server.example.net/~/www/

И загрузим основную ветку на целевой сервер:

$ git push origin master

Вот и всё!

Что дальше?


В дальнейшем, для выгрузки основной ветки на сервер когда нам это будет нужно, вам достаточно будет делать:

$  git add htdocs/index.html
$  git commit -m "Ещё один коммит"
$  git push

Этот удаленный репозитарий можно использовать и для любых других целей коллективной разработки, для которых обычно используют Git, например, выгружать другие ветки в целях обмена между разработчиками. Также можно по-умолчанию выгружать на сервере не master-ветку, а, например, release-ветку:

~/www$ git checkout release

А что если я изменю файлы прямо на сервере...


В представленном выше варианте все незакоммиченные изменения, которые были внесены напрямую на сервере, будут удалены при очередном git push, что, если вам достаточно не повезло, может быть неприемлемо. Если вам совершенно необходимо дать кому-то возможность менять файлы прямо на сервере, например, через FTP, вместо представленного выше хука post-receive используйте следующий .git/hooks/pre-receive:

#!/bin/sh
cd ..
GIT_DIR='.git'
git stash save --quiet
git stash show || true

Вместе с этим .git/hooks/post-receive:

#!/bin/sh
cd ..
GIT_DIR='.git'
git reset --hard
git stash pop --quiet || git reset --hard

В этой усложнённой схеме, в случае конфликтов при git push, вам нужно будет вручную сделать git stash pop на сервере и разрешить конфликты.

Что ещё нужно знать?


Убедитесь, что посторонние не могут прочитать файлы в каталоге .git в корне вашего сайта, либо размещайте корень репозитария на уровень ниже корня веб-сайта.
Читать дальше
Twitter
Одноклассники
Мой Мир

материал с habrahabr.ru

3

      Add

      You can create thematic collections and keep, for instance, all recipes in one place so you will never lose them.

      No images found
      Previous Next 0 / 0
      500
      • Advertisement
      • Animals
      • Architecture
      • Art
      • Auto
      • Aviation
      • Books
      • Cartoons
      • Celebrities
      • Children
      • Culture
      • Design
      • Economics
      • Education
      • Entertainment
      • Fashion
      • Fitness
      • Food
      • Gadgets
      • Games
      • Health
      • History
      • Hobby
      • Humor
      • Interior
      • Moto
      • Movies
      • Music
      • Nature
      • News
      • Photo
      • Pictures
      • Politics
      • Psychology
      • Science
      • Society
      • Sport
      • Technology
      • Travel
      • Video
      • Weapons
      • Web
      • Work
        Submit
        Valid formats are JPG, PNG, GIF.
        Not more than 5 Мb, please.
        30
        surfingbird.ru/site/
        RSS format guidelines
        500
        • Advertisement
        • Animals
        • Architecture
        • Art
        • Auto
        • Aviation
        • Books
        • Cartoons
        • Celebrities
        • Children
        • Culture
        • Design
        • Economics
        • Education
        • Entertainment
        • Fashion
        • Fitness
        • Food
        • Gadgets
        • Games
        • Health
        • History
        • Hobby
        • Humor
        • Interior
        • Moto
        • Movies
        • Music
        • Nature
        • News
        • Photo
        • Pictures
        • Politics
        • Psychology
        • Science
        • Society
        • Sport
        • Technology
        • Travel
        • Video
        • Weapons
        • Web
        • Work

          Submit

          Thank you! Wait for moderation.

          Тебе это не нравится?

          You can block the domain, tag, user or channel, and we'll stop recommend it to you. You can always unblock them in your settings.

          • michaelpak
          • домен habrahabr.ru

          Get a link

          Спасибо, твоя жалоба принята.

          Log on to Surfingbird

          Recover
          Sign up

          or

          Welcome to Surfingbird.com!

          You'll find thousands of interesting pages, photos, and videos inside.
          Join!

          • Personal
            recommendations

          • Stash
            interesting and useful stuff

          • Anywhere,
            anytime

          Do we already know you? Login or restore the password.

          Close

          Add to collection

             

            Facebook

            Ваш профиль на рассмотрении, обновите страницу через несколько секунд

            Facebook

            К сожалению, вы не попадаете под условия акции