2016-03-03 2 views
1

Я хочу создать приложение Java, которое контролирует репозиторий GitHub, извлекает изменения на машине, на которой он запущен, и запускает метод, когда что-то в репо изменилось.Java-монитор Репозиторий GitHub

while(true) 
{ 
    if(new commits on the remote github repo) 
    { 
     pullChanges(); 
     doSomething(); 
    } 
} 

настоящее время я использую JGit и регулярно удаляя локальный репозиторий клонировать новый и сравнить общий размер файла, чтобы проверить, если что-то изменилось. Это невероятно взломанно и ненадежно (если фиксация просто изменяет букву, размеры файлов будут одинаковыми)

+0

вы должны быть в состоянии получить в журнале фиксаций из репозитория с помощью jgit и если изменения хэш тянуть изменения. – Dodge

+0

[здесь] (https://github.com/centic9/jgit-cookbook/blob/master/src/main/java/org/dstadler/jgit/porcelain/ShowLog.java) является образцом для извлечения журнала фиксации – Dodge

ответ

0

Я изменил его клонировать репозиторий при запуске приложения Java, после того, что я создал отдельный поток, который вытягивает новые коммиты из репозитория каждые 30 секунд и проверяет, есть ли что-то изменилось с «FetchResult» вернулся из Java-метод.

Это помогло мне:

Cloning a repo

Pulling commits

0

Вы можете использовать GitHub Webhooks.

Webhooks позволяет создавать или настраивать интеграцию, которые подписываются на определенные события на GitHub.com. Когда срабатывает одно из этих событий, мы отправим полезную нагрузку HTTP POST на настроенный URL веб-камеры. Webhooks можно использовать для обновления внешнего трекера, запускать CI-сборки, обновлять резервное зеркало или даже развертывать на вашем производственном сервере. Вы ограничены только своим воображением.

Смежные вопросы