Project vs Repository di GitHub

189

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?

carlossierra
sumber
1
Repositori github hanyalah sebuah "direktori" tempat file dan folder bisa ada. Orang lain dapat membuat salinan sendiri dari "direktori" ini dan memodifikasinya sesuai keinginan, lalu meminta agar perubahan mereka dimasukkan ke dalam repositori utama. Mengenai proyek, saya tidak yakin karena saya belum pernah menggunakannya.
byxor
1
Anda bilang Anda telah melihat pertanyaan serupa, tetapi apakah Anda benar-benar membaca tautan pertama Anda? "Itu hal yang gitorious, bukan git. Kamu dapat memiliki banyak repositori per proyek." dan jawaban lain pada utas yang sama "Git tidak memiliki hal-hal seperti proyek, hanya repositori." Jika Anda memang benar-benar bermaksud proyek github, saya sarankan untuk memeriksa dokumen github tentang hal itu help.github.com/articles/…
PeeHaa
6
@PeeHaa ya saya lakukan. Kalimat pertama menyatakan ini: "Itu adalah hal gitorious, bukan git. Anda dapat memiliki beberapa repositori per proyek.". Bagi saya, ini berbicara tentang Gitorius, bukan GitHub. Juga, dikatakan bahwa di Gitorious Anda dapat memiliki beberapa repositori per proyek, tetapi di GitHub adalah sebaliknya. Jadi, saya akan sangat menghargai jika Anda bisa menjelaskan bagaimana ini menjawab pertanyaan saya?
carlossierra
2
Saya pikir ini menyentuh semantik di mana Projects fitur baru - papan visual - bertentangan dengan penggunaan berlebihan istilah Proyek. Suara turun kemungkinan bahwa ini bukan pertanyaan pemrograman.
osowskit
2
Ini harus memiliki semua yang Anda butuhkan github.com/blog/…
osowskit

Jawaban:

110

GitHub baru-baru ini memperkenalkan fitur baru yang disebut Projects . Ini menyediakan papan visual yang khas dari banyak alat Manajemen Proyek:

Proyek

Sebuah Repositori seperti yang didokumentasikan di GitHub:

Repositori adalah elemen paling dasar dari GitHub. Mereka paling mudah dibayangkan sebagai folder proyek. Repositori berisi semua file proyek (termasuk dokumentasi), dan menyimpan riwayat revisi setiap file. Repositori dapat memiliki beberapa kolaborator dan dapat bersifat publik atau pribadi.

Sebuah Proyek yang didokumentasikan di GitHub:

Papan proyek di GitHub membantu Anda mengatur dan memprioritaskan pekerjaan Anda. Anda dapat membuat papan proyek untuk pekerjaan fitur tertentu, roadmap yang komprehensif, atau bahkan merilis daftar periksa. Dengan papan proyek, Anda memiliki fleksibilitas untuk membuat alur kerja yang disesuaikan dengan kebutuhan Anda.

Bagian dari kebingungan adalah bahwa fitur baru, Proyek, bertentangan dengan penggunaan berlebihan dari istilah proyek dalam dokumentasi di atas.

osowskit
sumber
1
Jadi saya menggunakan Github untuk menyimpan kode untuk proyek-proyek penelitian individu saya A, B, C, dll. Jika saya memahaminya dengan benar, setiap proyek penelitian akan mendapatkan repositori sendiri? Jadi A mendapat repositori, B mendapat repositori, C mendapat repositori, dll?
Plinth
Ketika Anda melakukan repositori, apakah fork Anda memiliki akses ke snapshot papan Proyek?
geominded
7
bagaimana ini dipilih sebagai jawaban yang diterima? cukup salin tempel dari apa yang dijelaskan. itu bisa dibaca oleh OP tetapi orang ingin tahu dengan contoh sederhana.
batmaci
152

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 :

{
  "message": "Projects are disabled for this repo",
  "documentation_url": "https://developer.github.com/v3"
}

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:

  • Buat proyek repositori -POST /repos/:owner/:repo/projects
  • Buat proyek organisasi -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.

rsp
sumber
Di Bitbucket Atlassian, Anda dapat membuat proyek yang mencakup keluarga repo terkait. Apakah Github memiliki fitur organisasi ini? Saya berharap Proyek Github menjadi hal itu, tetapi jelas tidak. Sepertinya saya tidak tahu cara membuat organisasi ini mungkin di Github. Saya sangat terbiasa dengan Bitbucket, jadi itu mungkin hanya kurva belajar.
Ungeheuer
Dengan cara tertentu akan lebih masuk akal bagi saya jika satu proyek dapat memiliki beberapa repositori. Saya mendapat kesan bahwa GitHub melihat bahwa semakin tua dan bukannya melakukan desain ulang lengkap hanya memilih untuk membuat solusi dan menjualnya sebagai hal yang baik. Ngomong-ngomong, siapa pemilik GitHub saat ini? Mungkin jawabannya memberikan beberapa petunjuk tentang mengapa ini terjadi. Hanya berpikir keras.
Almir Campos
19

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.

Digamber
sumber
4

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 :

Repositori GitHub hanyalah sebuah "direktori" tempat folder dan file bisa ada.

Apakah Nhu Vy
sumber
Terimakasih atas tanggapan Anda. Tapi saya tidak berpikir definisi Anda tentang sebuah proyek adalah apa yang GitHub sebut proyek, karena contoh-contoh repositori multi-proyek tidak menunjukkan apa pun di tab Proyek untuk repositori tersebut. Bisakah Anda jelaskan hal ini?
carlossierra
2
Sebenarnya, contoh menggunakan Zend Framework benar-benar salah! Menurut nomenklatur GitHub, ada sebuah organisasi bernama "zendframework" yang memiliki banyak repositori, termasuk yang juga bernama "zendframework" dan satu untuk setiap modul kerangka kerja.
igorcadelima
3
9 November 2017: contoh 1 repositori = banyak proyek mengembalikan 404.
Bram Vanroy
1
tautan rusak
Pmpr
1
Dalam hal GitHub, jawaban ini bertentangan dengan jawaban lain yang lebih populer di atas.
Manohar Reddy Poreddy
1

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

Anshu Aditya
sumber
1

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.

Jeremy
sumber
0

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:

  1. Kelola dengan satu repositori. Jika salah satu aplikasi diubah, seluruh proyek (semua aplikasi) akan dikomit ke versi baru.

  2. Kelola oleh beberapa repositori. Jika satu aplikasi diubah, itu hanya akan mempengaruhi repositori yang mengelola aplikasi. Versi untuk repositori lain tidak berubah.

danau
sumber