Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / PHP, Perl, Python |
![]() ![]() |
polin11 Member Откуда: Сообщений: 116 |
Использование curl Хочу написать скрипт на python, который удалит файл из удаленного репозитория gitlab (из определенной ветки). Для начала решил ознакомиться с gitlab api. Есть докуемнтация https://docs.gitlab.com/ee/api/commits.html#create-a-commit-with-multiple-files-and-actions там есть пример для curl: PAYLOAD=$(cat << 'JSON' { "branch": "master", "commit_message": "some commit message", "actions": [ { "action": "create", "file_path": "foo/bar", "content": "some content" }, { "action": "delete", "file_path": "foo/bar2" }, { "action": "move", "file_path": "foo/bar3", "previous_path": "foo/bar4", "content": "some content" }, { "action": "update", "file_path": "foo/bar5", "content": "new content" }, { "action": "chmod", "file_path": "foo/bar5", "execute_filemode": true } ] } JSON ) curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" --header "Content-Type: application/json" --data "$PAYLOAD" https://gitlab.example.com/api/v4/projects/1/repository/commits Пытаюсь через curl выполнить curl --request POST --header "PRIVATE-TOKEN: ***" --header "Content-Type: application/json" --data '{"branch":"my_branch","commit_message":"message","actions":[{"action":"delete","file_path":"README.md"}]}' https://gitlab.com/api/v4/projects/1/repository/commits никакое сообщение с ошибкой не падает, но файл README.md не удаляется, проверял PRIVATE-TOKEN -указан верно, ветка my_branch существует, id проекта bp url указан верно, почему не удаляется файл? |
22 янв 19, 11:24 [21790887] Ответить | Цитировать Сообщить модератору |
Hett Member Откуда: Бийск, Новосибирск Сообщений: 13411 |
А в чем прикол консольный curl использовать, когда можно взять питоновскую либу? |
22 янв 19, 12:01 [21790916] Ответить | Цитировать Сообщить модератору |
kolobok0 Member Откуда: Сообщений: 1901 |
polin11, в доке же чёрным по ангельскому написано name=last_commit_id Type=string Required=no Description=Last known file commit id. Will be only considered in update, move and delete actions. Я так понимаешь, что ждёт ID из последнего коммита. (круглый) ЗЫ Это по аналогии с другими командами и полями в них участвующих. В примерах выше они по тихому опущены. Гитлаб полон таких ляпов, увы :) |
22 янв 19, 12:08 [21790925] Ответить | Цитировать Сообщить модератору |
Hett Member Откуда: Бийск, Новосибирск Сообщений: 13411 |
Required=no |
||
22 янв 19, 12:40 [21790955] Ответить | Цитировать Сообщить модератору |
Hett Member Откуда: Бийск, Новосибирск Сообщений: 13411 |
ага, у вас в логике скорее ляпы |
||
22 янв 19, 12:41 [21790956] Ответить | Цитировать Сообщить модератору |
Hett Member Откуда: Бийск, Новосибирск Сообщений: 13411 |
У тебя проект как называется? "1"? |
22 янв 19, 12:45 [21790964] Ответить | Цитировать Сообщить модератору |
polin11 Member Откуда: Сообщений: 116 |
Hett, Нет там указывается ID проекта (1 привел для примера), ID указан правильно, например запрос возвращает список всех веток из проекта curl --header "PRIVATE-TOKEN: ****" https://gitlab.com/api/v4/projects/1/repository/branches |
22 янв 19, 13:00 [21790990] Ответить | Цитировать Сообщить модератору |
polin11 Member Откуда: Сообщений: 116 |
Hett, попробовал вызвать с ключом -v ответ такой: HTTP/ 1.1 400 Bad request connection #0 to host gitlab.com left intact Видимо синтаксис запроса неверный, подозреваю проблема из-за информации --data, может быть в запросе нужно указать, что данные в формате JSON |
22 янв 19, 13:02 [21790995] Ответить | Цитировать Сообщить модератору |
Hett Member Откуда: Бийск, Новосибирск Сообщений: 13411 |
ну у тебя заголовок же есть: --header "Content-Type: application/json" |
||
22 янв 19, 13:13 [21791023] Ответить | Цитировать Сообщить модератору |
Hett Member Откуда: Бийск, Новосибирск Сообщений: 13411 |
Кстати экспериментировать проще в postman. |
22 янв 19, 13:17 [21791033] Ответить | Цитировать Сообщить модератору |
Hett Member Откуда: Бийск, Новосибирск Сообщений: 13411 |
А запрос из консоли делается? Или из питона запускаешь шелл команду? |
22 янв 19, 13:18 [21791034] Ответить | Цитировать Сообщить модератору |
kolobok0 Member Откуда: Сообщений: 1901 |
polin11, https замените на http в запросе... |
22 янв 19, 14:10 [21791133] Ответить | Цитировать Сообщить модератору |
Hett Member Откуда: Бийск, Новосибирск Сообщений: 13411 |
нафига? |
||
22 янв 19, 14:11 [21791138] Ответить | Цитировать Сообщить модератору |
kolobok0 Member Откуда: Сообщений: 1901 |
Вы правы начнём с диагностики... 2polin11 выдайте в консоле wget https://gitlab.com/api/v4/projects/1 https проходит? ЗЫ когда не проходит - именно такое поведение(при запросе курл), без ответное... |
||||
22 янв 19, 14:23 [21791156] Ответить | Цитировать Сообщить модератору |
kolobok0 Member Откуда: Сообщений: 1901 |
:) Вы мало с ним работали как я погляжу...бывает... |
||
22 янв 19, 14:24 [21791159] Ответить | Цитировать Сообщить модератору |
Hett Member Откуда: Бийск, Новосибирск Сообщений: 13411 |
Вы предлагаете диагностировать SSL, когда видно, что протокол более высокого уровня работает и отдает код ошибки. О чем еще говорить? |
||||
22 янв 19, 14:45 [21791198] Ответить | Цитировать Сообщить модератору |
Hett Member Откуда: Бийск, Новосибирск Сообщений: 13411 |
Дальше предложите проверить, работате ли интернет и включен ли компьютер? :) |
22 янв 19, 14:53 [21791217] Ответить | Цитировать Сообщить модератору |
polin11 Member Откуда: Сообщений: 116 |
Hett, Эмпирическим путем выяснил, если записать JSON в файл (например 1.json), то такой запрос прекрасно работает curl --request POST --header "PRIVATE-TOKEN: ***" --header "Content-Type: application/json" --data "@1.json" https://gitlab.com/api/v4/projects/1/repository/commits Для полного счастья, осталось написать скрип на python, наверно при помощи библиотеки requests или urllib, который делает тоже самое... |
22 янв 19, 19:19 [21791497] Ответить | Цитировать Сообщить модератору |
polin11 Member Откуда: Сообщений: 116 |
Есть такой вопрос: Есть 2 ветки, назовем их Branch1 и Branch2, Branch2 создана на основе Branch1. При помощи gitlab api, создаю на основе ветки Branch1 новую ветку Branch1_new пушу туда некоторые изменения. Если создаю мерж реквест (пытаюсь смержить) ветку Branch1_new в Branch2 (раздел Changes заполнен) изменения появляются в Branch2. Если создаю мерж реквест (пытаюсь смержить) ветку Branch1_new в Branch1 (раздел Changes заполнен) изменения появляются в Branch1. Но когда делаю подряд 2 мерж реквеста, ветку Branch1_new в Branch1 и в Branch2, то изменения отображаются только в Branch1 (раздел Changes заполнен) . В мерже в Branch2 нет никаких изменений (раздел Changes пустой), почему не могу понять? Пользователи, которые часто пользуются gitlab поясните причину |
31 янв 19, 02:37 [21798372] Ответить | Цитировать Сообщить модератору |
Все форумы / PHP, Perl, Python | ![]() |