Проблема API GITHub с загрузкой файла

Я пытаюсь загрузить файл на GitHub через API GITHub (http://developer.github.com/v3/repos/contents/). Что-то я не могу загрузить файл. Когда я попытался загрузить существующий файл, он выдал мне сообщение "{\"message\":\"refs/heads/master должен находиться по адресу ee1cd720841a4b5b06a8339c333c56b1748e66f9\",\"documentation_url\":\"http://developer.github.com/v3/repos/contents/\"}". Когда я зашел на github и попытался удалить файл с помощью веб-сайта, это дало мне следующую ошибку. Я могу сделать обходной путь с возвратом головы к предыдущей версии и двигаться дальше. Но я пытаюсь понять, что вызвало такое поведение и как я могу предотвратить его в будущем. Ни Google, ни Github Help не смогли мне ответить, поэтому ищу что-то от сообщества. Спасибо за внимание. введите здесь описание изображения


person TorontoKid    schedule 24.10.2013    source источник
comment
Вы случайно не используете Repositories API для быстрой последовательной записи в репозиторий? Например, создаете ли вы несколько файлов, выполняя новые вызовы API до завершения предыдущих вызовов?   -  person Ivan Zuzak    schedule 25.10.2013
comment
Спасибо за ответ Иван!! Ваше предположение верно. Я пытаюсь создать несколько файлов подряд как часть процесса развертывания. С другой стороны, хотя я выполняю синхронные загрузки, поэтому, как только я получаю ответ от GiHub API ok 200 OK, я выдаю еще один запрос на создание/обновление следующего файла.   -  person TorontoKid    schedule 25.10.2013
comment
Я предполагаю, что вы попали в крайний случай с API из-за этих последовательных записей, которые происходят одна за другой. Не могли бы вы попробовать включить сон в свой сценарий, чтобы вы ждали секунду или две между звонками? Это должно решить проблему. Мы работаем над исправлением этого с нашей стороны, но я не могу обещать, когда это будет решено. Дайте мне знать, если это не поможет.   -  person Ivan Zuzak    schedule 25.10.2013
comment
Спасибо Иван!! После вашего первого комментария я сделал то же самое. Я заставляю поток спать в течение 500 мс и продолжаю то же самое. Это работало нормально. Спасибо за подсказку!! Я просто интересуюсь любопытством. Когда я делаю http-запрос с помощью API, он фактически ставит задачу в очередь с вашей стороны, а затем фиксирует изменения? Это мое предположение, но вы можете это подтвердить.   -  person TorontoKid    schedule 25.10.2013
comment
Я точно не уверен - здесь задействовано много вещей/уровней, и я не знаком со всеми деталями (включая кэширование, которое всегда вызывает интересные проблемы). Рад слышать, что вам удалось обойти проблему! :)   -  person Ivan Zuzak    schedule 26.10.2013


Ответы (1)


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

person TorontoKid    schedule 01.11.2013