Найти - Пользователи
Полная версия: применение curl
Начало » Флейм » применение curl
1
polin11
Хочу написать скрипт на 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 существует,
в url id проекта указан верно, почему не удаляется файл?
JOHN_16
и где тут вопрос про питон?
polin11
я хочу понять как это работает через curl, затем самостоятельно на python напишу скрипт при помощи библиотеки requests. Надеюсь, что большинство питонистов часто работают с curl и gitlab и смогут подсказать пути решения
polin11
попробовал вызвать с ключом -v
ответ такой:
HTTP/ 1.1 400 Bad request
connection #0 to host gitlab.com left intact
Видимо синтаксис запроса неверный, подозреваю проблема из-за информации –data, может быть в запросе нужно указать, что данные в формате JSON
py.user.next
Запроси просто коммит через curl для начала.
polin11
Работает, приходит информация о коммите
curl -v –header “PRIVATE-TOKEN: ***” https://gitlab.com/api/v4/projects/1/repository/commits/76acf22
Работает, делает реверт коммита
curl -v –request POST –header “PRIVATE-TOKEN: ***” –form “branch=my_branch” https://gitlab.com/api/v4/projects/1/repository/commits/76acf22/revert
py.user.next
Дальше получи этот файл через curl
https://docs.gitlab.com/ee/api/repository_files.html#get-file-from-repository

Дальше удали файл основным способом через curl
https://docs.gitlab.com/ee/api/repository_files.html#delete-existing-file-in-repository

Если не удаляется, создай второй файл, закоммить его и удали этот второй файл.
polin11
Эмпирическим путем выяснил, если записать 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, который делает тоже самое…
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 поясните причину
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB