Git — извлекать изменения, внесенные в файлы на удаленном компьютере

Я хотел бы сначала поблагодарить вас! Каждый раз, когда я застреваю, я всегда нахожу решение здесь. Так что большое спасибо!

Но на этот раз мне нужно задать вопрос: в настоящее время я создаю небольшой веб-сайт с веб-интерфейсом, где администратор может изменять текст, сохраненный в базе данных sqlite. Я использую git локально и для развертывания на сервере, а также хук после получения в голом репо на сервере для извлечения файлов в другом каталоге. Этот каталог затем используется nginx и gunicorn для обслуживания приложения flask и файлов.

На данный момент все работает нормально, но у меня возник вопрос: поскольку база данных хранится в файле (sqlite) в другом каталоге, чем репозиторий, как я могу получить изменения, внесенные в удаленный файл, в мой локальный репозиторий разработки? Также пользователь может загружать изображения, которые отображаются на веб-сайте, но как я могу загрузить их в свой локальный репозиторий. Должен ли я инициировать репо в каталоге, который я мог бы затем получить? Или есть другое решение?

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


person lkostka    schedule 10.11.2014    source источник
comment
Зачем минусовать? Возможно, я недостаточно хорошо объяснил свой вопрос, но я могу гарантировать, что искал через SO и Google и ничего не нашел.   -  person lkostka    schedule 10.11.2014


Ответы (1)


Насколько я понимаю, у вас есть следующие настройки:

  1. локальный репозиторий L переносится на удаленный R
  2. пост-прием на удаленных клонах с R по U, которые обслуживаются HTTP-сервером
  3. пользователь обновляет U новым содержанием
  4. вы хотите перенести изменения с удаленного U на локальный L

Я предполагаю, что U является клоном R. Вы можете просто получить изменения из U в локальный L — здесь нет проблем, так как все коммиты, сделанные пользователем, имеют тот же родительский коммит, что и ваш локальный L. Единственная трудная часть — зафиксировать изменения, сделанные пользователем в U. Вам, вероятно, потребуется выполнить некоторые сценарии, поэтому, если пользователь загружает какой-либо контент, скажем, через ftp, git commit срабатывает. Репозиторий U должен быть каким-то образом доступен — ssh кажется хорошей идеей в этой настройке.

person ezaquarii    schedule 10.11.2014
comment
Спасибо за ответ. Итак, в этом случае я должен 1/инициировать репо в U и 2/добавить несколько скриптов для выполнения фиксации, верно? Я посмотрю, не существует ли крючка для этого - person lkostka; 10.11.2014
comment
Да, это то, что я имею в виду. Внутри Git нет волшебного крючка для автоматической фиксации изменений в рабочем каталоге. Внесение изменений должно осуществляться той же стороной, которая изменяет контент. - person ezaquarii; 10.11.2014
comment
Хорошо спасибо. Я также подумал, что альтернативой, которая у меня была, было поместить файл базы данных в gitignore на локальном компьютере и просто CP возвращать удаленный файл каждый раз, когда мне нужно делать обновление. - person lkostka; 10.11.2014