Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PHP, Perl, Python Новый топик    Ответить
 Использование curl  [new]
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]     Ответить | Цитировать Сообщить модератору
 Re: Использование curl  [new]
Hett
Member

Откуда: Бийск, Новосибирск
Сообщений: 13411
А в чем прикол консольный curl использовать, когда можно взять питоновскую либу?
22 янв 19, 12:01    [21790916]     Ответить | Цитировать Сообщить модератору
 Re: Использование curl  [new]
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]     Ответить | Цитировать Сообщить модератору
 Re: Использование curl  [new]
Hett
Member

Откуда: Бийск, Новосибирск
Сообщений: 13411
kolobok0
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 из последнего коммита.

(круглый)
ЗЫ
Это по аналогии с другими командами и полями в них участвующих. В примерах выше они по тихому опущены. Гитлаб полон таких ляпов, увы :)



Required=no
22 янв 19, 12:40    [21790955]     Ответить | Цитировать Сообщить модератору
 Re: Использование curl  [new]
Hett
Member

Откуда: Бийск, Новосибирск
Сообщений: 13411
автор
В примерах выше они по тихому опущены. Гитлаб полон таких ляпов, увы :)

ага, у вас в логике скорее ляпы
22 янв 19, 12:41    [21790956]     Ответить | Цитировать Сообщить модератору
 Re: Использование curl  [new]
Hett
Member

Откуда: Бийск, Новосибирск
Сообщений: 13411
У тебя проект как называется? "1"?
22 янв 19, 12:45    [21790964]     Ответить | Цитировать Сообщить модератору
 Re: Использование curl  [new]
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]     Ответить | Цитировать Сообщить модератору
 Re: Использование curl  [new]
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]     Ответить | Цитировать Сообщить модератору
 Re: Использование curl  [new]
Hett
Member

Откуда: Бийск, Новосибирск
Сообщений: 13411
polin11
Hett,

попробовал вызвать с ключом -v
ответ такой:
HTTP/ 1.1 400 Bad request
connection #0 to host gitlab.com left intact
Видимо синтаксис запроса неверный, подозреваю проблема из-за информации --data, может быть в запросе нужно указать, что данные в формате JSON


ну у тебя заголовок же есть: --header "Content-Type: application/json"
22 янв 19, 13:13    [21791023]     Ответить | Цитировать Сообщить модератору
 Re: Использование curl  [new]
Hett
Member

Откуда: Бийск, Новосибирск
Сообщений: 13411
Кстати экспериментировать проще в postman.
22 янв 19, 13:17    [21791033]     Ответить | Цитировать Сообщить модератору
 Re: Использование curl  [new]
Hett
Member

Откуда: Бийск, Новосибирск
Сообщений: 13411
А запрос из консоли делается? Или из питона запускаешь шелл команду?
22 янв 19, 13:18    [21791034]     Ответить | Цитировать Сообщить модератору
 Re: Использование curl  [new]
kolobok0
Member

Откуда:
Сообщений: 1901
polin11,

https замените на http в запросе...
22 янв 19, 14:10    [21791133]     Ответить | Цитировать Сообщить модератору
 Re: Использование curl  [new]
Hett
Member

Откуда: Бийск, Новосибирск
Сообщений: 13411
kolobok0
polin11,

https замените на http в запросе...


нафига?
22 янв 19, 14:11    [21791138]     Ответить | Цитировать Сообщить модератору
 Re: Использование curl  [new]
kolobok0
Member

Откуда:
Сообщений: 1901
Hett
kolobok0
polin11,

https замените на http в запросе...


нафига?


Вы правы начнём с диагностики...

2polin11
выдайте в консоле
wget https://gitlab.com/api/v4/projects/1

https проходит?

ЗЫ
когда не проходит - именно такое поведение(при запросе курл), без ответное...
22 янв 19, 14:23    [21791156]     Ответить | Цитировать Сообщить модератору
 Re: Использование curl  [new]
kolobok0
Member

Откуда:
Сообщений: 1901
Hett
...у вас в логике скорее ляпы


:) Вы мало с ним работали как я погляжу...бывает...
22 янв 19, 14:24    [21791159]     Ответить | Цитировать Сообщить модератору
 Re: Использование curl  [new]
Hett
Member

Откуда: Бийск, Новосибирск
Сообщений: 13411
kolobok0
Hett
...у вас в логике скорее ляпы


:) Вы мало с ним работали как я погляжу...бывает...


Вы предлагаете диагностировать SSL, когда видно, что протокол более высокого уровня работает и отдает код ошибки. О чем еще говорить?
22 янв 19, 14:45    [21791198]     Ответить | Цитировать Сообщить модератору
 Re: Использование curl  [new]
Hett
Member

Откуда: Бийск, Новосибирск
Сообщений: 13411
Дальше предложите проверить, работате ли интернет и включен ли компьютер? :)
22 янв 19, 14:53    [21791217]     Ответить | Цитировать Сообщить модератору
 Re: Использование curl  [new]
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]     Ответить | Цитировать Сообщить модератору
 Re: Использование curl  [new]
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 Ответить