Di GitHub, apa perbedaan konseptual antara proyek (yang dapat dibuat di dalam repositori) dan repositori?
Saya telah melihat beberapa pertanyaan serupa (di sini , di sini dan di sini ) di SO, tetapi tidak satu pun dari mereka menjelaskan apa itu proyek GitHub, apa itu repositori GitHub dan kapan harus menggunakan masing-masing dari mereka.
Saya akan sangat menghargai jika seseorang dapat menjelaskan setiap istilah, dan memberikan contoh kapan harus menggunakan / membuat masing-masing istilah. Sebagai contoh, jika saya memiliki beberapa aplikasi prototipe, semuanya independen satu sama lain, apa yang saya buat untuk mengelola secara terorganisir kode sumber untuk semuanya?
git
github
version-control
repository
carlossierra
sumber
sumber
Jawaban:
GitHub baru-baru ini memperkenalkan fitur baru yang disebut Projects . Ini menyediakan papan visual yang khas dari banyak alat Manajemen Proyek:
Sebuah Repositori seperti yang didokumentasikan di GitHub:
Sebuah Proyek yang didokumentasikan di GitHub:
Bagian dari kebingungan adalah bahwa fitur baru, Proyek, bertentangan dengan penggunaan berlebihan dari istilah proyek dalam dokumentasi di atas.
sumber
Fakta 1: Proyek dan Gudang selalu sinonim di GitHub.
Fakta 2: Ini bukan lagi masalahnya.
Ada banyak kebingungan tentang Repositori dan Proyek. Di masa lalu kedua istilah itu digunakan cukup banyak secara bergantian oleh pengguna dan dokumentasi GitHub sendiri. Ini tercermin oleh beberapa jawaban dan komentar di sini yang menjelaskan perbedaan halus antara istilah-istilah itu dan ketika yang satu lebih disukai daripada yang lain. Perbedaannya selalu halus, misalnya seperti pelacak masalah menjadi bagian dari proyek tetapi bukan bagian dari repositori yang mungkin dianggap sebagai hal yang sangat git dll.
Tidak lagi.
Saat ini repo dan proyek merujuk ke berbagai jenis entitas yang memiliki API terpisah :
Sejak itu tidak lagi benar untuk memanggil repo proyek atau sebaliknya. Perhatikan bahwa sering bingung dalam dokumentasi resmi dan sangat disayangkan bahwa istilah yang sudah banyak digunakan telah dipilih sebagai nama entitas baru tetapi ini adalah kasusnya dan kita harus hidup dengan itu.
Konsekuensinya adalah bahwa repo dan proyek biasanya bingung dan setiap kali Anda membaca tentang proyek GitHub Anda harus bertanya-tanya apakah itu benar-benar tentang proyek atau tentang repo. Seandainya mereka memilih beberapa nama lain atau singkatan seperti "proj" maka kita bisa tahu bahwa yang dibahas adalah tipe entitas baru, objek yang tepat dengan properti konkret, atau jenis proyeksi seperti repo yang mirip proyektor.
Istilah yang biasanya tidak ambigu adalah "papan proyek" .
Apa yang bisa kita pelajari dari API
Titik akhir pertama dalam dokumentasi API Proyek:
dijelaskan sebagai: Daftar proyek repositori . Ini berarti repositori dapat memiliki banyak proyek. Jadi keduanya tidak bisa berarti hal yang sama. Ini termasuk Respons jika proyek dinonaktifkan :
yang berarti bahwa beberapa repo dapat menonaktifkan proyek. Sekali lagi, itu tidak bisa menjadi hal yang sama ketika repo dapat menonaktifkan proyek.
Ada beberapa titik akhir lain yang menarik:
POST /repos/:owner/:repo/projects
POST /orgs/:org/projects
tetapi tidak ada :
Buat proyek pengguna -POST /users/:user/projects
Yang membawa kita ke perbedaan lain:
1. Repositori dapat menjadi milik pengguna atau organisasi
2. Proyek dapat menjadi milik repositori atau organisasi
atau, yang lebih penting:
1. Proyek dapat menjadi milik repositori tetapi tidak sebaliknya
2. Proyek dapat menjadi milik organisasi tetapi bukan untuk pengguna
3. Repositori dapat milik organisasi dan pengguna
Lihat juga:
Saya tahu ini membingungkan. Saya mencoba menjelaskannya setepat mungkin.
sumber
Repositori GitHub digunakan untuk menyimpan semua file, folder, dan sumber daya lain yang Anda pedulikan.
Git Project: Ini juga merupakan salah satu Sumber Daya dalam Git Repository dan penggunaan utamanya adalah untuk mengelola proyek dengan papan visual. Jika Anda membuat proyek di Git Repository, ia membuat papan visual seperti papan Kanban untuk mengelola proyek.
Dengan cara ini, Anda dapat memiliki beberapa proyek di repositori.
sumber
Secara umum, di GitHub, 1 repositori = 1 proyek . Misalnya: https://github.com/spring-projects/spring-boot . Tapi itu bukan aturan yang sulit.
1 repositori = banyak proyek . Misalnya: https://github.com/donhuvy/java_examples
1 proyek = banyak repositori . Sebagai contoh: https://github.com/zendframework/zendframework (1 proyek bernama Zend Framework 3 memiliki 61 + 1 = 62 repositori, jangan percaya? Mari hitung modul-modul Zend Frameworks '+ repositori utama)
Saya setuju dengan @Brandon Ibbotson 's komentar :
sumber
Sehubungan dengan kosakata git, Proyek adalah folder tempat konten (file) aktual hidup. Sedangkan Repositori (repo) adalah folder di dalam mana git menyimpan catatan setiap perubahan yang dilakukan dalam folder proyek . Namun secara umum, keduanya dapat dianggap sama. Project = Repository
sumber
Perbedaan konseptual dalam pemahaman saya bahwa suatu proyek dapat berisi banyak repo dan yang independen satu sama lain, sementara secara bersamaan repo mungkin berisi banyak proyek. Repo hanya menjadi tempat penyimpanan kode sementara proyek merupakan kumpulan tugas untuk fitur tertentu.
Apakah itu masuk akal? Repo besar dapat memiliki banyak proyek yang sedang dikerjakan oleh orang yang berbeda pada saat yang sama (banyak fitur perbedaan ditambahkan ke monolith), sebuah proyek besar mungkin memiliki banyak repo kecil yang terpisah tetapi bagian dari proyek yang sama yang saling berinteraksi satu sama lain. lainnya - layanan microser? Ini adalah pandangan pribadi tentang apa yang ingin Anda lakukan. Saya pikir repo (penyimpanan) vs proyek (tugas) adalah perbedaan utama - jika saya salah tolong beri tahu saya / jelaskan! Terima kasih.
sumber
Ini adalah pemahaman pribadi saya tentang topik tersebut.
Untuk suatu proyek, kita dapat melakukan kontrol versi oleh repositori yang berbeda. Dan untuk repositori, ia dapat mengelola seluruh proyek atau bagian dari proyek.
Mengenai proyek Anda (beberapa aplikasi prototipe yang independen dari masing-masing). Anda dapat mengelola proyek dengan satu repositori atau oleh beberapa repositori, bedanya:
Kelola dengan satu repositori. Jika salah satu aplikasi diubah, seluruh proyek (semua aplikasi) akan dikomit ke versi baru.
Kelola oleh beberapa repositori. Jika satu aplikasi diubah, itu hanya akan mempengaruhi repositori yang mengelola aplikasi. Versi untuk repositori lain tidak berubah.
sumber