powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Использование curl
19 сообщений из 19, страница 1 из 1
Использование curl
    #39762693
polin11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Использование curl

Хочу написать скрипт на python, который удалит файл из удаленного репозитория gitlab (из определенной ветки).
Для начала решил ознакомиться с gitlab api. Есть докуемнтация https://docs.gitlab.com/ee/api/commits.html#create-a-commit-with-multiple-files-and-actions
там есть пример для curl:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
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 выполнить

Код: javascript
1.
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 указан верно, почему не удаляется файл?
...
Рейтинг: 0 / 0
Использование curl
    #39762713
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в чем прикол консольный curl использовать, когда можно взять питоновскую либу?
...
Рейтинг: 0 / 0
Использование curl
    #39762719
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 из последнего коммита.

(круглый)
ЗЫ
Это по аналогии с другими командами и полями в них участвующих. В примерах выше они по тихому опущены. Гитлаб полон таких ляпов, увы :)
...
Рейтинг: 0 / 0
Использование curl
    #39762738
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolobok0polin11,

в доке же чёрным по ангельскому написано

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
...
Рейтинг: 0 / 0
Использование curl
    #39762739
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор В примерах выше они по тихому опущены. Гитлаб полон таких ляпов, увы :)
ага, у вас в логике скорее ляпы
...
Рейтинг: 0 / 0
Использование curl
    #39762746
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У тебя проект как называется? "1"?
...
Рейтинг: 0 / 0
Использование curl
    #39762765
polin11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hett,

Нет там указывается ID проекта (1 привел для примера), ID указан правильно, например запрос возвращает список всех веток из проекта
curl --header "PRIVATE-TOKEN: ****" https://gitlab.com/api/v4/projects/1/repository/branches
...
Рейтинг: 0 / 0
Использование curl
    #39762767
polin11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hett,

попробовал вызвать с ключом -v
ответ такой:
HTTP/ 1.1 400 Bad request
connection #0 to host gitlab.com left intact
Видимо синтаксис запроса неверный, подозреваю проблема из-за информации --data, может быть в запросе нужно указать, что данные в формате JSON
...
Рейтинг: 0 / 0
Использование curl
    #39762786
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
polin11Hett,

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

ну у тебя заголовок же есть: --header "Content-Type: application/json"
...
Рейтинг: 0 / 0
Использование curl
    #39762791
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати экспериментировать проще в postman.
...
Рейтинг: 0 / 0
Использование curl
    #39762792
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А запрос из консоли делается? Или из питона запускаешь шелл команду?
...
Рейтинг: 0 / 0
Использование curl
    #39762835
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
polin11,

https замените на http в запросе...
...
Рейтинг: 0 / 0
Использование curl
    #39762839
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolobok0polin11,

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

нафига?
...
Рейтинг: 0 / 0
Использование curl
    #39762848
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hettkolobok0polin11,

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

нафига?

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

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

https проходит?

ЗЫ
когда не проходит - именно такое поведение(при запросе курл), без ответное...
...
Рейтинг: 0 / 0
Использование curl
    #39762851
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett...у вас в логике скорее ляпы

:) Вы мало с ним работали как я погляжу...бывает...
...
Рейтинг: 0 / 0
Использование curl
    #39762867
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolobok0Hett...у вас в логике скорее ляпы

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

Вы предлагаете диагностировать SSL, когда видно, что протокол более высокого уровня работает и отдает код ошибки. О чем еще говорить?
...
Рейтинг: 0 / 0
Использование curl
    #39762874
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дальше предложите проверить, работате ли интернет и включен ли компьютер? :)
...
Рейтинг: 0 / 0
Использование curl
    #39763066
polin11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hett,

Эмпирическим путем выяснил, если записать JSON в файл (например 1.json), то такой запрос прекрасно работает
Код: javascript
1.
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, который делает тоже самое...
...
Рейтинг: 0 / 0
Использование curl
    #39767355
polin11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть такой вопрос:
Есть 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 поясните причину
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Использование curl
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]