GNU/Linux >> Belajar Linux >  >> Linux

Buka file langsung dari repositori pribadi GitLab

Jika Anda ingin mengakses file dari GitLab pribadi, Anda dapat menggunakan pendekatan di bawah ini yang berhasil untuk saya :)

Bangun URL:

https://url/api/v4/projects/projectId/repository/files/fileName/raw?ref=master&private_token=Generated_private_token

  • url adalah url Gitlab Anda ex:git.lab.com.
  • /api/v4/projects adalah konstanta.
  • projectId adalah projectId dari proyek Anda, yang dapat Anda temukan di bawah nama proyek Anda di gitlab.
  • /repositori/file sekali lagi adalah konstanta.
  • namaberkas adalah nama file ex:sagar.txt
  • /raw?ref= adalah konstanta dan nilai ref dapat berupa master atau cabang mana pun yang ingin Anda ambil filenya. Saya sedang mengambil file dari Guru.
  • Generated_private_token harus dihasilkan dari gitlab, silakan ikuti langkah-langkah yang disebutkan di tautan:Buat Token Pribadi

Perbarui 25-12-2018:

selama Anda tidak mengunduh file besar, ini akan berfungsi:

curl -s -H "Private-Token: <token>" "https://gitlab.com/api/v4/projects/<urlencode("gitlab_username/project_name")>/repository/files/<path/to/file>/raw?ref=<branch_name>"

, contoh nyata, mendownload file /README.md dari repositori pribadi https://gitlab.com/divinity76/Yur17 , dengan url unduhan web adalah https://gitlab.com/divinity76/Yur17/raw/master/README.md?inline=false , adalah:

curl -s -H "Private-Token: afF2s1xgk6xcwXHy3J4C" "https://gitlab.com/api/v4/projects/divinity76%2Fyur17/repository/files/README%2Emd/raw?ref=master"

perhatikan secara khusus bagaimana gitlab_username/repo_name dikodekan dengan url, misalnya / menjadi %2F (Anda dapat memeriksa bagaimana nama pengguna &nama repo Anda sebagai url-encoded dengan membuka terminal javascript browser Anda dan menulis encodeURIComponent("your_username/repo_name"); di terminal dan tekan enter.)

berkat Jonathan Hall @ gitlab di mg.gitlab.com, dan https://docs.gitlab.com/ee/api/repository_files.html , dan tvl untuk membantu mencapai solusi.

Perbarui 2018-12-11:metode ini tidak lagi berfungsi, sekarang hanya melayani halaman login, dengan pesan bertuliskan need to log in to continue , bahkan menggunakan HTTP 200 OK (memalukan), akan diperbarui jika saya mengetahui alasannya ( @XavierStuvw mengklaim ini terkait dengan masalah keamanan)

saya menemukan cara yang jauh lebih mudah untuk melakukannya daripada jawaban @tvl,

pertama buat token akses dengan akses API di sini:https://gitlab.com/profile/personal_access_tokens , lalu lakukan:

wget --header 'PRIVATE-TOKEN: <token>' 'https://gitlab.com/<username>/<repo>/raw/master/path/to/file.ext'

saya menemukan solusinya di sini.


Dengan bantuan berharga Chris, berikut adalah bagaimana Anda dapat menjalankan skrip (drupal .make file dalam kasus saya) dari server GitLab. (Mungkin ini berfungsi untuk GitHub tapi saya tidak mengujinya. Mungkin sintaksnya akan sedikit berbeda). (Tentu saja ini berfungsi untuk semua jenis skrip)

Itu dapat dilakukan dengan menggunakan token otentikasi. Ini dokumentasi API GitLab dan ini API GitHub

Untuk memudahkan saya akan menggunakan https://gitlab.com sebagai server contoh.

  • Buka https://gitlab.com/profile/account dan temukan "Token pribadi" Anda

  • Kemudian cetak daftar proyek dan temukan id proyek yang Anda cari

    curl https://gitlab.com/api/v3/projects?private_token=<your_private_token>

    atau buka dengan browser Anda (penampil json akan sangat membantu)

  • Kemudian cetak daftar file yang ada di proyek ini dan temukan id file yang Anda cari

    curl https://gitlab.com/api/v3/projects/<project_id>/repository/tree?private_token=<your_private_token>

  • Akhirnya dapatkan / jalankan file!

    curl https://gitlab.com/api/v3/projects/<project_id>/repository/raw_blobs/<file_id>?private_token=<your_private_token>

Jika Anda ingin menjalankan skrip (drupal .make)

drush make https://gitlab.com/api/v3/projects/<project_id>/repository/raw_blobs/<file_id>?private_token=<your_private_token> <drupal_folder>

(Jika Anda di sini mencari alur kerja untuk mengintegrasikan GitLab dengan platform Aegir .make tanpa menggunakan token (mungkin SSH?), silakan buat utas dan tempel tautannya di sini.)

EDIT

Anda bisa mendapatkan file tanpa project_id dengan menggunakan dikodekan Nama Proyek. Misalnya my-user-name/my-project akan menjadi:my-user-name%2Fmy-project


Linux
  1. Instal binari ke /bin, /sbin, /usr/bin dan /usr/sbin, interaksi dengan --prefix dan DESTDIR

  2. Django static_root di /var/www/... - tidak ada izin untuk mengumpulkan statis

  3. Bagaimana cara mengetahui dari folder mana suatu proses sedang berjalan?

  1. unix:///var/run/supervisor.sock tidak ada file seperti itu

  2. Mengapa meletakkan hal-hal selain /home ke partisi terpisah?

  3. gema atau cetak /dev/stdin /dev/stdout /dev/stderr

  1. Bagaimana Linux Menangani Beberapa Pemisah Jalur Berturut-turut (/home////username///file)?

  2. Linux:Perbedaan Antara /dev/console , /dev/tty Dan /dev/tty0?

  3. Mengapa < atau > diperlukan untuk menggunakan /dev/tcp