Ini adalah yang pertama daripada 4 skrip yang saya akan tulis seperti yang dinyatakan dalam seni bina sistem. Terasa bersemangat! ia merupakan satu langkah ke arah mencipta pengalaman "wiki" yang mendapat sumbangan kepada Sumber Terbuka tanpa berantara muka dengan UI GitHub ?.
Apakah skrip ini?
Ini adalah fail js yang memegang beberapa fungsi boleh guna semula yang berkaitan terutamanya bertujuan untuk digunakan untuk berinteraksi dengan API GitHub; ia sama ada digunakan dalam skrip yang sama atau dieksport untuk digunakan untuk melaksanakan fungsi asas mereka di tempat lain dalam projek. Mereka menerima tika Octokit yang disahkan pengguna sebagai parameter daripada orang lain, tika ini digunakan untuk melaksanakan tindakan/fungsi melalui API GitHub bagi pihak pengguna yang disahkan.
Keperluan untuk mencipta aliran sumbangan kepada Sumber Terbuka tanpa berantaramuka dengan UI GitHub bermakna kami perlu mengautomasikan beberapa proses - mensimulasikan setiap langkah yang akan diambil oleh pengguna jika mereka menyumbang melalui UI GitHub, langkah-langkahnya adalah seperti mengikuti..
- Repo Projek Fork
- Buat Cawangan
- Komit Perubahan pada Cawangan (tambah fail mdx baharu dalam direktori src/pages/word/ untuk perkataan baharu atau edit yang sedia ada, dalam kes kami)
- Buat Permintaan Tarik (Serahkan perubahan perkataan, dalam kes kami)
Kebenaran yang patut dinyatakan
Saya mula menulis skrip ini sejurus selepas komit awal, ini sebenarnya PR #2, tetapi ia mendapat kesan semasa rehat bulan yang panjang? saya mengambil daripada projek itu sebelum kembali bekerja pada ciri kamus asas.
Skrip
Tugas di sini adalah untuk mencipta "Skrip Fork" — yang matlamat akhirnya adalah untuk mencipta/mendapatkan percabangan repo jargons.dev pada/daripada akaun pengguna. Ia sepatutnya menempatkan setiap fungsi yang akan melakukan perkara berikut.
- Semak sama ada Fork of jargons.dev sudah wujud pada akaun pengguna
- Jika Fork Wujud
- Semak sama ada Fork dalam-Segerak dengan huluan (iaitu terkini dengan cawangan utama repo jargons.dev); JIKA TIDAK — Kemas kini garpu
- Jika TIADA Garpu ditemui
- Buat Garpu
- Jika Fork Wujud
Memahami tugasan itu, saya "menyelidiki" terus dalam mengusahakan skrip.
Saya sudah sangat terbiasa dengan API GitHub kerana penggunaan kerap saya dalam kerja harian saya di Hearts ❤️... Jadi saya mempunyai Dokumentasi Fork GitHub kelihatan seperti broski kepada saya ?...
Langkah-langkah
- Saya mencipta fungsi forkRepository utama yang merupakan titik masuk utama untuk melaksanakan fungsi fork - ia membawa ke tempat lain
- Saya menambah fungsi berikut, yang kebanyakannya berfungsi sebagai pembantu kepada fungsi forkRepository utama yang jelas
- isRepositoryForked - fungsi ini menyemak sama ada repositori jargons.dev sudah bercabang ke akaun pengguna yang disahkan semasa
- isRepositoryForkUpdated - untuk menyemak sama ada garpu (jika ditemui) (dalam Segerakkan dengan repo kepala) terkini dengan jargons.dev repo utama
- updateRepositoryFork - digunakan untuk mengemas kini repositori (Segerakkan) kepada keadaan repositori jargons.dev utama (kepala)
- getBranch - ialah utiliti asas (diperlukan semasa menulis skrip ini) yang digunakan untuk mengambil butiran Branch/Ref untuk repo jargons.dev dan garpu pengguna untuk digunakan dalam perbandingan yang dilakukan dalam pembantu isRepositoryForkUpdated untuk melaksanakan fungsi utamanya; ia menggunakan titik akhir Rujukan GitHub.
Andaian saya yang pelik
Terlintas di fikiran saya? semasa saya menulis skrip ini adalah pemikiran yang saya pegang selepas membaca perenggan yang dipetik di bawah pada Dokumentasi Fork GitHub
Nota: Forking Repository berlaku secara tidak segerak. Anda mungkin perlu menunggu masa yang singkat sebelum anda boleh mengakses objek git. Jika ini mengambil masa lebih daripada 5 minit, pastikan anda menghubungi Sokongan GitHub.
Saya salah faham ini dan menganggap bahawa kami hanya akan dapat memulakan proses garpu, meneruskan dan pastinya tidak akan dapat menunggu objek tindak balas yang mengembalikan butiran garpu baharu kerana kami tidak tahu apabila proses garpu selesai.
Andaian ini memaksa saya untuk tidak memulangkan sebarang data daripada fungsi forkRepository utama dan saya sudah mula berfikir pada ketika ini - bagaimana saya hendak mendapatkan butiran fork untuk diproses ke fasa seterusnya proses sumbangan!? Hmm, mungkin saya akan menggunakan webhooks?!?
Nampaknya saya terlalu memikirkannya?, Saya menyedari kemudian bahawa saya akan mendapatkan butiran tindak balas untuk garpu dan ini menyebabkan saya melakukan susulan PR untuk menangani pemulangan data yang diperlukan daripada objek tindak balas garpu untuk penggunaan dalam proses sumbangan.
PR itu
Utama:
feat: melaksanakan skrip repositori `fork`
#3

Permintaan Tarik ini melaksanakan skrip garpu; skrip ini bertujuan untuk digunakan untuk memprogramkan repo projek utama ke akaun pengguna; Ia menempatkan fungsi utama dan fungsi pembantu lain yang digunakannya untuk melakukan beberapa tindakan yang perlu bagi memastikan operasi garpu repo yang cekap.
Perubahan Dibuat
- Melaksanakan fungsi forkRepository utama dalam skrip; fungsi ini ialah fungsi eksport utama yang melaksanakan operasi garpu utama; ia menerima contoh penggunaOctokit (objek yang disahkan pengguna dengan kebenaran untuk bertindak bagi pihak pengguna) dan butiran repositori projek iaitu objek repoDetails dan ia melakukan perkara berikut...
- Ia menyemak sama ada repositori projek telah dicabangkan ke akaun pengguna menggunakan fungsi pembantu isRepositoryForked; ini mengembalikan garpu null
- Jika repo telah dicabang, maka kami melakukan semakan sama ada garpu itu dikemas kini/selaras dengan repo projek utama menggunakan fungsi pembantu isRepositoryForkUpdated; ini mengembalikan sifat kemas kiniSHA dan boolean isUpdated yang mengesahkan sama ada fork adalah terkini
- Jika garpu tidak terkini; kemudian kami melakukan kemas kini dengan membawanya selari dengan repo projek utama menggunakan fungsi pembantu updateRepositoryFork
- Jika repo dikemas kini/selaras dengan repo projek utama; kami membatalkan operasi pada ketika ini dengan pulangan awal;
- Jika repo telah dicabang, maka kami melakukan semakan sama ada garpu itu dikemas kini/selaras dengan repo projek utama menggunakan fungsi pembantu isRepositoryForkUpdated; ini mengembalikan sifat kemas kiniSHA dan boolean isUpdated yang mengesahkan sama ada fork adalah terkini
- Jika repositori projek tidak dicabangkan ke akaun pengguna; kemudian kami meneruskan untuk memulakan proses garpu dengan memanggil titik akhir "POST /repos/{owner}/{repo}/forks" menggunakan contoh userOctokit. (Ini memulakan proses garpu, kita tidak tahu dengan tepat bila proses itu selesai?)
- Ia menyemak sama ada repositori projek telah dicabangkan ke akaun pengguna menggunakan fungsi pembantu isRepositoryForked; ini mengembalikan garpu null
- Laksanakan fungsi pembantu berikut yang digunakan dalam fungsi forkRepository utama dan dalam fungsi pembantu lain juga
- updateRepositoryFork - digunakan untuk mengemas kini repositori (Segerakkan) kepada keadaan repositori (kepala) utama
- isRepositoryForkUpdated - digunakan untuk menyemak sama ada garpu (dalam Segerakkan dengan repo kepala) terkini dengan repo utama
- getBranch - digunakan untuk mengambil butiran Cawangan/Ruj
- isRepositoryForked - digunakan untuk menyemak kehadiran repo tertentu dalam senarai repo fork pengguna
- Menambahkan getRepoParts ke /lib/utils; ia adalah fungsi utiliti yang digunakan untuk menyelesaikan repoOwner dan repoName daripada nama penuh repositori.
Isu Berkaitan
Menyelesaikan #2
Siaran Skrin/Tangkapan Skrin
https://github.com/babblebey/jargons.dev/assets/25631971/16221b7e-3c28-4c6c-a1f3-24d583ce7e3a
?
Susulan:
feat: return repo `nama penuh` dalam skrip fork
#29

PR ini adalah susulan kepada langkah yang hilang dalam pelaksanaan awal skrip fork di #3; skrip fork gagal mengembalikan repo yang boleh digunakan dalam langkah pengiraan seterusnya. Ini adalah kerana andaian aneh yang saya ada semasa pelaksanaan awal. ?Lihat andaian saya di bawah...
Saya menganggap bahawa panggilan ke titik akhir "POST /repos/{owner}/{repo}/forks" hanya memastikan untuk memulakan proses fork tanpa memberi jaminan kepada kami tentang respons sama sekali. Bermaksud kami mungkin tidak mendapat respons.data selepas panggilan
...tetapi itu tidak benar, saya mendapati bahawa respons.data sebenarnya datang, tetapi ia mungkin mengambil sedikit masa dan hanya dalam kes di mana repo yang dicabang adalah besar.... dan pada masa ini forking repo projek berlaku dalam masa kurang daripada 5 saat.
Perubahan Dibuat
- Returned fork repo - ini ialah nilai nama penuh repo yang dikembalikan daripada fungsi pembantu isRepositoryForked; Saya dengan ini mengembalikannya sebagai nilai pulangan utama daripada pelaksanaan fungsi forkRepository dalam keadaan repo sudah bercabang pada akaun pengguna pelaksana
- Returned response.data.full_name - ini ialah nama penuh fork repo yang baru dibuat; Nilai ini daripada respons kepada panggilan titik akhir "POST /repos/{owner}/{repo}/forks"; Saya dengan ini mengembalikannya sebagai nilai semula utama daripada pelaksanaan fungsi forkRepository dalam kes di mana tiada garpu telah ditemui pada akaun pengguna pelaksana
- Cherry memilih beberapa perubahan daripada #25 untuk digunakan di sini
- f12f25f548a5c5836e9be7d601ed226c5269f5ee
- 436ceea649b67812c0ec1164fde95d443ce556e0
?
Atas ialah kandungan terperinci Membina jargons.dev [# Skrip Fork. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Aplikasi JavaScript di dunia nyata termasuk pengaturcaraan sisi pelayan, pembangunan aplikasi mudah alih dan Internet of Things Control: 1. Pengaturcaraan sisi pelayan direalisasikan melalui node.js, sesuai untuk pemprosesan permintaan serentak yang tinggi. 2. Pembangunan aplikasi mudah alih dijalankan melalui reaktnatif dan menyokong penggunaan silang platform. 3. Digunakan untuk kawalan peranti IoT melalui Perpustakaan Johnny-Five, sesuai untuk interaksi perkakasan.

Saya membina aplikasi SaaS multi-penyewa berfungsi (aplikasi edTech) dengan alat teknologi harian anda dan anda boleh melakukan perkara yang sama. Pertama, apakah aplikasi SaaS multi-penyewa? Aplikasi SaaS Multi-penyewa membolehkan anda melayani beberapa pelanggan dari Sing

Artikel ini menunjukkan integrasi frontend dengan backend yang dijamin oleh permit, membina aplikasi edtech SaaS yang berfungsi menggunakan Next.Js. Frontend mengambil kebenaran pengguna untuk mengawal penglihatan UI dan memastikan permintaan API mematuhi dasar peranan

JavaScript adalah bahasa utama pembangunan web moden dan digunakan secara meluas untuk kepelbagaian dan fleksibiliti. 1) Pembangunan front-end: Membina laman web dinamik dan aplikasi satu halaman melalui operasi DOM dan kerangka moden (seperti React, Vue.js, sudut). 2) Pembangunan sisi pelayan: Node.js menggunakan model I/O yang tidak menyekat untuk mengendalikan aplikasi konkurensi tinggi dan masa nyata. 3) Pembangunan aplikasi mudah alih dan desktop: Pembangunan silang platform direalisasikan melalui reaktnatif dan elektron untuk meningkatkan kecekapan pembangunan.

Trend terkini dalam JavaScript termasuk kebangkitan TypeScript, populariti kerangka dan perpustakaan moden, dan penerapan webassembly. Prospek masa depan meliputi sistem jenis yang lebih berkuasa, pembangunan JavaScript, pengembangan kecerdasan buatan dan pembelajaran mesin, dan potensi pengkomputeran IoT dan kelebihan.

JavaScript adalah asas kepada pembangunan web moden, dan fungsi utamanya termasuk pengaturcaraan yang didorong oleh peristiwa, penjanaan kandungan dinamik dan pengaturcaraan tak segerak. 1) Pengaturcaraan yang didorong oleh peristiwa membolehkan laman web berubah secara dinamik mengikut operasi pengguna. 2) Penjanaan kandungan dinamik membolehkan kandungan halaman diselaraskan mengikut syarat. 3) Pengaturcaraan Asynchronous memastikan bahawa antara muka pengguna tidak disekat. JavaScript digunakan secara meluas dalam interaksi web, aplikasi satu halaman dan pembangunan sisi pelayan, sangat meningkatkan fleksibiliti pengalaman pengguna dan pembangunan silang platform.

Python lebih sesuai untuk sains data dan pembelajaran mesin, manakala JavaScript lebih sesuai untuk pembangunan front-end dan penuh. 1. Python terkenal dengan sintaks ringkas dan ekosistem perpustakaan yang kaya, dan sesuai untuk analisis data dan pembangunan web. 2. JavaScript adalah teras pembangunan front-end. Node.js menyokong pengaturcaraan sisi pelayan dan sesuai untuk pembangunan stack penuh.

JavaScript tidak memerlukan pemasangan kerana ia sudah dibina dalam pelayar moden. Anda hanya memerlukan editor teks dan penyemak imbas untuk memulakan. 1) Dalam persekitaran penyemak imbas, jalankan dengan memasukkan fail HTML melalui tag. 2) Dalam persekitaran Node.js, selepas memuat turun dan memasang node.js, jalankan fail JavaScript melalui baris arahan.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

mPDF
mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

DVWA
Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

SecLists
SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

MinGW - GNU Minimalis untuk Windows
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.