Как заставить git НЕ заменять содержимое папки?

0

Я размещаю свой php-проект на cloudcontrol.com, в моем проекте у меня есть статическая папка, в которой я сохраняю фотографии профиля пользователя, например:

uploads/profile/userpic1.jpg
uploads/profile/userpic2.jpg
uploads/profile/userpic2.jpg

Я.gitignore все файлы в папке профиля с файлом.gitignore:

*
!.gitignore

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

Моя проблема:

Всякий раз, когда я нажимаю какие-либо обновления на рабочий сервер, я потерял все файлы внутри каталога профиля на сервере! Кажется, что git (или облачный контроль) ЗАМЕНИТЬ каталог профиля, а не просто обновлять его содержимое, не касаясь старых файлов/изображений.

Любой совет, как я могу это исправить. Я думал, что это просто проблема.gitignore, и я сделал все, чтобы сделать эту работу, но я не мог. Я как бы новичок в материалах Git и PaaS.

спасибо

Теги:
cloudcontrol

2 ответа

3
Лучший ответ

cloudControl, как и большинство хостов для облачных приложений, заменяет полную папку приложения при ее развертывании. Обычно это делается для обеспечения горизонтального масштабирования и обеспечения того, чтобы каждое развертывание основывалось на том же (пустом) состоянии.

См. Также документацию о непостоянной файловой системе:

Непостоянная файловая система

TL; DR:

  • Каждый контейнер имеет свою собственную файловую систему.
  • Файловая система не является постоянной.
  • Не храните загрузки в файловой системе.

Развертывания на платформе cloudControl имеют доступ к записываемой файловой системе. Однако эта файловая система не является постоянной. Записанные данные могут снова быть доступны или недоступны в будущих запросах, в зависимости от того, как маршрут маршрутизации направляет запросы через доступные контейнеры и удаляется после каждого развертывания. Это включает развертывания, которые вы запускаете вручную, но также повторно развертываете, выполненные самой платформой во время нормальной работы.

Для загрузки пользователей (например, изображения профиля пользователя) мы рекомендуем хранить объекты, такие как Amazon S3 или функцию GridFS, входящую в состав дополнения MongoLab.

Поэтому, если вы хотите динамически хранить файлы, вам придется искать в этом отдельное решение.

  • 0
    Это имеет смысл сейчас! Большое спасибо тыкаю
0

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

/public/assets/images/users/*
!/public/assets/images/users/version*
  • 0
    Я совершенно новичок в Git и облачных приложениях, почти мне нужно версия каждого файла в моем проекте, но я думаю, что папки для загрузки и кеширования ... Мне нужно выяснить, как реализовать aws s3 с cloudcontroll и laravel:) .. Спасибо, Интеграл;)
  • 0
    S3 на самом деле довольно прост в использовании с Laravel, так как у вас уже есть композитор. Вот ссылка для отправки на ваш веселый путь: docs.aws.amazon.com/aws-sdk-php/guide/latest/quick-start.html
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню