Использование git для отслеживания изменений в Dropbox?

Перейти к нижней части для TLDR.

Выпуск:

В нашей среде каждый использует Dropbox для совместной разработки большого проекта кодирования. Он решает проблему того, чтобы все были в курсе того, что изменили все остальные, и также содержит некоторые простые версии, касающиеся «кто изменил что и когда».

Что Dropbox не предоставляет, и это то, что я ищу, – это потрясающий соус Git, насколько это касается версий, вины, различий контента и т. Д.

С чем я работаю сейчас:

Я по-прежнему использую dropbox как наш «контроль версий», потому что другие «разработчики», вероятно, не смогут определить git, я знаю, что это легко, но они ненавидят изменения .

Для того, чтобы я увидел, «что происходит, и кто это делает», я отслеживаю всю папку Dropbox для этого проекта с помощью Git.

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

Что я ищу:

Кто-нибудь имеет опыт работы с окружающей средой, в которой я застрял? Я хотел бы найти что-то, что может заметить изменения в Dropbox, вытащить имя пользователя, кто сделал это изменение, используя API Dropbox, и автоматически зафиксировать изменение git.

Я не нашел такого решения и уже начал писать приложение на Python, чтобы делать то, что хочу, мне, возможно, придется разместить это на github и попросить о помощи , с низким свободным временем и относительно новым для Python.

Я могу вытащить RSS-канал из API Dropbox и проанализировать, что такое файл и кто его изменил, но недостаточно далеко, чтобы подключить его к Git Commit, должно быть тривиально . Я просто не хочу изобретать все колеса.

TLDR:

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

Заранее спасибо.

Git Repo, если вы хотите помочь! https://github.com/haqthat/git-drop

3 Solutions collect form web for “Использование git для отслеживания изменений в Dropbox?”

Честно говоря, вашей команде нужна одна неделя практики git, а затем вы получите гораздо более надежный рабочий процесс. Не пытайтесь автоматизировать коммиты. То, что ведет по дороге в ад.

Если вы можете разместить его на linux, как насчет использования iwatch ? Всякий раз, когда файл обновляется в папке Dropbox с помощью синхронизации Dropbox, iwatch может запускать скрипт python, когда это происходит, чтобы вытащить пользователя. Затем используйте envoy для запуска двух команд git, git add 'filename' и git commit -m "autocommit by system for user X changes" .

Конечно, это не очень красиво, но он выполнит эту работу, и он не будет работать, если не будет обновления.

Я использовал dropbox как git repo, следуя чему-то по строкам http://tumblr.intranation.com/post/766290743/using-dropbox-git-repository

Таким образом, самый простой способ, о котором я могу думать, это:

1) Инициируйте репо в папке Dropbox (это будет автоматически синхронизировать всех, с которыми вы делитесь)

2) Настройте его с помощью пульта дистанционного управления на github или вашего собственного git-сервера, если таковой имеется. Таким образом, все изменения файлов и пользователей будут отслеживаться на пульте дистанционного управления.

3) Напишите сценарий как задание cron, которое периодически берется из вашего локального Dropbox, а затем запускается против удаленного git-сервера и ищет дельта и ревизии . Вы можете получить это от Dropbox API ref, начинающегося здесь – https://www.dropbox.com/developers/reference/api#revisions

4) После выполнения вышеизложенного вы можете включить вызов https://www.dropbox.com/developers/reference/api#metadata, который, как и dropbox, возвращает хэш, который может использоваться для отслеживания изменений, а затем вызывает ваш сценарий опроса. На данный момент не существует способа, по которому dropbox может уведомить вас об изменениях, отличных от вашего опроса, каждые несколько минут на пульте дистанционного управления.

 hash Each call to /metadata on a folder will return a hash field, generated by hashing all of the metadata contained in that response. On later calls to /metadata, you should provide that value via this parameter so that if nothing has changed, the response will be a 304 (Not Modified) status code instead of the full, potentially very large, folder listing. This parameter is ignored if the specified path is associated with a file or if list=false. A folder shared between two users will have the same hash for each user. 
Python - лучший язык программирования в мире.