git clone - пользовательский контент отсутствует
Для моего первого phalcon-проекта я решил выбрать fortrabbit-хостинг, хотя у меня нет большого опыта работы с git. Я работал в одном мастер-дереве, которое постоянно передавалось и толкалось. У меня есть несколько папок, которые полны пользовательского контента (загрузка изображений). Чтобы не удалять эти файлы после новых коммитов, я помещаю эти папки в мой файл.gitignore. Но как я могу обновить свой локальный репозиторий этим пользовательским контентом? git pull или git fetch не сработали для этого сценария. И как правильно использовать git для развертывания на live-сцене?
1 ответ
Ваша кодовая база является частью Git, вы можете использовать Git для ее развертывания в веб-пространстве. Само веб-пространство не в Git. Удаленное Git-репозиторий синхронизирует или копирует его содержимое в веб-пространство.
Это не вопрос установки правильного .gitignore
правила. Файлы в веб-пространстве могут изменяться: например, когда программное обеспечение имеет права на временные, журнальные, кеш-файлы или пользовательские загрузки. Другой пример - использование "веб-установщика" (подумайте, обновления WordPress). Все эти изменения не будут отражены в Git - так как не рекомендуется хранить такие данные времени выполнения в Git, и, поскольку нет никакой возможности синхронизировать эти изменения с репозиторием Git (чтобы вы могли вернуть эти изменения обратно), Это невозможно, и это также не то, что вы хотите.
Есть несколько подходов для решения этой ситуации, две наиболее распространенные модели:
Наиболее профессиональным является следование 12-факторному шаблону проектирования: код и контент строго разделены. Пользовательский контент будет храниться вне сайта. С каждым нажатием Git база кода будет переупаковываться и развертываться. Хранилище для приложений является эфемерным, при каждом (атомарном) развертывании полная база кода будет заменена новым содержимым. Профессиональный стек с фортраббитом разработан так.
Более удобным, особенно для устаревшего мышления / дизайна, является решение, подобное универсальному стеку fortrabbit, где во время развертывания новые файлы из репозитория Git будут "синхронизироваться" в веб-пространстве с "перезаписывать, но не удалять". Веб-пространство является постоянным, и можно войти через SSH/SFTP, чтобы получить и загрузить все файлы, когда это необходимо.
Пожалуйста, спросите внимательно. Этот вопрос может быть недостаточно общим, чтобы представлять интерес для переполнения стека.