Знадобилося мені на дозвіллі налаштувати git репозиторій на власному сервері. Раніше я працював тільки з SVN і з git'ом практично не стикався. Тому виконавши даний квест отримав +1 до досвіду роботи з VCS, яким хочу з вами поділитися.
Незважаючи на численні статті, уроки і підручники з git, для того, щоб в'їхати в нього і нарешті налаштувати все як треба, у мене пішло два дні. А на повторення всієї цієї процедури з початку і до кінця - 10 хвилин. Легко, коли знаєш). Щож, як би там не було, інструкцій для свого кейса я не знайшов і вирішив це виправити, а кейс наступний:
У нас є віддалений сервер, на якому є git і доступ по SSH. На ньому потрібно створити git репозиторій. На клієнті з репозиторієм ми будемо працювати в IDE PhpStorm. Так само потрібно, щоб відправлені зміни з клієнта, тобто з нашого локального комп'ютера, відразу потрапляли в головний репозиторій на сервері, а не вимагали ручної перевірки і мерджа.
1. Налаштування git сховища на віддаленому сервері
Для того, щоб налаштувати репозиторій потрібно:
1. Перейти в папку з нашими робочими файлами
Все, на стороні сервера все готово. Переходимо до клієнта.
2. Створення проекту в PhpStorm, настройка IDE
У вікні створення нового проекту, вибираємо Checkout from version control system. Ви вікні - вибираємо git.
Налаштування роботи з репозиторієм
Перш ніж почати працювати, потрібно виконати ще пару дій. Зокрема, PhpStorm створює свю папку .idea, де зберігає всякі свої системні файли. І Git цю папку вважає частиною сховища, але вона нею не є. На сервері її бути не повинно. І перше, що ви побачите у вкладці Changes - будуть файли з папки .idea, які не були додані до головного сховища.
Потрібно зробити так, щоб Git цю папку ігнорував.
Можливо ви знаєте про файл .gitignore, який служить для опису файлів і каталогів, які Git повинен ігнорувати. Але прописувати папку .idea в даному файлі - неправильно. Так як цей файл коммітов якщо кожен розробник буде туди прописувати якісь свої папки, які є тільки у нього - цей файл може перетворитися в смітник. Правильне рішення - використовувати файл, який знаходиться в .git / info / exclude. Цей файл, на відміну від .gitignore НЕ коммітов, а поширюється виключно на локальну копію. У нього то ми і прописуємо:
Якщо зараз подивитися на вкладку Changes - ви побачите, що список порожній! Ура!
Файл .gitignore ми теж додаємо. У ньому ми вказуємо папки, які Git не потрібно індексувати. Це, наприклад папки з логами, якимись одними завантаженнями і т.п.
Щоб закріпити додавання файлу .gitignore, потрібно його закоммітіть і зробити потім push на сервер. У вкладці Changes зліва є кнопка "Commit". Далі все зрозуміло, розберетеся.
3. Автоматичне застосування змін в головному репозиторії
І останнє. Спочатку схема роботи така, що ви відправляєте свої зміни в bare-репозиторій. А потім власник головного сховища дивиться на те, що ви там накодо і приймає рішення, чи включати ваші правки в головний репозиторій чи ні. І якщо рішення позитивне, тоді він їх мерджіт в нього. Однак в моєму випадку, такої людини немає. Нас всього 2 людини і нам потрібно, щоб при команді push всі зміни автоматично застосовувалися в головному репозиторії. Вирішується це завдання за допомогою хуков.
Перейдіть в ваш bare-репозиторій. Хукі лежать в папці hooks. Якщо ви в неї перейдете, ви побачите кілька файлів, які закінчуються на .sample. Це приклади хуков, якщо прибрати .sample з назви файлу - хук почне працювати. Нам потрібно додати хук "post-update":