GitHub'da Proje ve Depo


189

GitHub'da, bir proje (bir havuz içinde oluşturulabilir) ile bir havuz arasındaki kavramsal fark nedir?

SO'da birkaç benzer soru gördüm ( burada , burada ve burada ), ancak hiçbiri GitHub projesinin ne olduğunu, GitHub havuzunun ne olduğunu ve her birinin ne zaman kullanılacağını açıklamıyor.

Birinin her terimi açıklayıp açıklayamayacağını ve her birini ne zaman kullanacağını / yaratacağına dair bir örnek verebilir miyim. Örneğin, birbirinden bağımsız birkaç prototip uygulamam varsa, kaynak kodlarının tümünü organize bir şekilde yönetmek için ne yaratırım?


1
Github deposu yalnızca dosya ve klasörlerin bulunabileceği bir "dizin" dir. Diğer insanlar bu "dizinin" kendi kopyalarını oluşturabilir ve istedikleri gibi değiştirebilir, daha sonra değişikliklerinin ana depoya konmasını isteyebilir. Projelere gelince, onları hiç kullanmadığımdan emin değilim.
byxor

1
Benzer bir soru gördüğünüzü söylediniz, ama ilk bağlantınızı gerçekten okudunuz mu? "Bu çok zekice bir şey, git bir şey değil. Proje başına birden çok deponuz olabilir." ve aynı konudaki başka bir cevap "Git'in proje gibi bir şeyleri yok, sadece depolar." Gerçekten github projeleri demek istediyseniz,
PeeHaa

6
@PeeHaa evet yaptım. İlk cümle şunu ifade eder: "Bu çok zekice bir şey, git bir şey değil. Proje başına birden fazla havuzunuz olabilir.". Bana göre, bu GitHub'dan değil Gitorius'tan bahsediyor. Ayrıca, Gitorious'da proje başına birden çok deponuz olabileceğini, ancak GitHub'da bunun tersi olduğunu söylüyor. Peki, bunun sorumu nasıl yanıtladığını açıklayabilirseniz gerçekten çok memnun olurum.
carlossierra

2
Bence bu, projenin - görsel yönetim kurulu - yeni özelliğinin Proje teriminin aşırı kullanımı ile çeliştiği anlambilime değiyor. Aşağı oy, muhtemelen bir programlama sorusu değildir.
osowskit

2
Bu ihtiyacınız olan her şeye sahip olmalı github.com/blog/…
osowskit

Yanıtlar:


110

GitHub kısa süre önce Projeler adlı yeni bir özellik sundu . Bu, birçok Proje Yönetimi aracının tipik bir görsel panosunu sağlar:

proje

GitHub'da belgelendiği gibi bir Havuz :

Havuz, GitHub'ın en temel öğesidir. Bir proje klasörü olarak hayal etmek en kolay olanıdır. Bir havuz tüm proje dosyalarını içerir (belgeler dahil) ve her dosyanın düzeltme geçmişini saklar. Depolarda birden çok ortak çalışan olabilir ve ortak veya özel olabilir.

GitHub'da belgelendiği gibi bir Proje :

GitHub'daki proje panoları çalışmanızı organize etmenize ve önceliklendirmenize yardımcı olur. Belirli özellik çalışmaları, kapsamlı yol haritaları ve hatta kontrol listelerini yayınlamak için proje panoları oluşturabilirsiniz. Proje panoları ile, ihtiyaçlarınıza uygun özelleştirilmiş iş akışları oluşturma esnekliğine sahip olursunuz.

Karışıklıkların bir kısmı, yeni özellik olan Projeler'in, yukarıdaki belgede proje döneminin aşırı kullanımı ile çakışmasıdır .


1
Bu yüzden Github'u bireysel araştırma projelerim A, B, C vb. İçin saklamak için kullanıyorum. Doğru anlıyorsam, her araştırma projesi kendi deposunu alacak mı? Yani A bir depo alır, B bir depo alır, C bir depo alır, vs.?
Süpürgelik

Bir Depoyu çatalla yapıştırdığınızda, çatalınızın Proje panosunun anlık görüntüsüne erişimi var mı?
18'de

7
bu kabul edilmiş bir cevap olarak nasıl seçilir? sadece tarif edilenin kopyasını yapıştırın. OP tarafından okunabilir ancak insanlar basit örneklerle bilmek isterler.
batmaci

152

Gerçek 1: Projeler ve Depolar GitHub'da her zaman eşanlamlıydı.

Gerçek 2: Artık böyle değil.

Depolar ve Projeler hakkında çok fazla kafa karışıklığı var. Geçmişte her iki terim de kullanıcılar ve GitHub'ın kendi belgeleri tarafından hemen hemen birbirinin yerine kullanılıyordu. Bu, bu terimler arasındaki ve birinin diğerine göre ne zaman tercih edildiğini açıklayan bazı cevaplar ve yorumlarla yansıtılmaktadır. Aradaki fark izleyicinin projenin bir parçası olması, ancak kesinlikle gitmiş bir şey olarak düşünülebilecek deponun bir parçası olmaması gibi fark her zaman inceydi.

Artık değil.

Şu anda depolar ve projeler , ayrı API'lara sahip farklı türde varlıkları ifade eder :

O zamandan beri repoya bir proje demek ya da tam tersi doğru değil. Resmi belgelerde sıklıkla karıştırıldığını ve zaten yaygın olarak kullanılan bir terimin yeni varlığın adı olarak seçilmesinin talihsiz olduğunu unutmayın, ancak durum budur ve bununla yaşamak zorundayız.

Sonuç olarak, depoların ve projelerin genellikle kafası karışır ve GitHub projeleri hakkında her okuduğunuzda bunun gerçekten projeler veya depolarla ilgili olup olmadığını merak etmeniz gerekir. Başka bir isim veya "proj" gibi bir kısaltma seçtilerse, tartışılan şeyin yeni tür varlık, somut özelliklere sahip kesin bir nesne veya genel olarak konuşan repo benzeri mermi türü bir şey olduğunu bilebilirdik.

Genellikle açık olan terim "proje tahtası" dır .

API'dan ne öğrenebiliriz

Projeler API'sının dokümantasyonundaki ilk uç nokta:

şu şekilde tanımlanır: Havuz projelerini listeleyin . Bir havuzun birçok projeye sahip olabileceği anlamına gelir. Yani bu ikisi aynı anlama gelemez. Projeler devre dışı bırakılmışsa Yanıt içerir :

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

bu da bazı depoların projeleri devre dışı bırakabileceği anlamına gelir. Yine, bir repoda projeler devre dışı bırakılabilirse bunlar aynı şey olamaz.

Başka ilginç son noktalar da var:

  • Havuz projesi oluşturma -POST /repos/:owner/:repo/projects
  • Bir organizasyon projesi oluşturun -POST /orgs/:org/projects

ama yok :

  • Bir kullanıcının projesi oluşturun -POST /users/:user/projects

Bu bizi başka bir farka götürür:

1. Depolar kullanıcılara veya kuruluşlara
ait olabilir 2. Projeler depolara veya kuruluşlara ait olabilir

veya daha da önemlisi:

1. Projeler depolara ait olabilir, ancak tam
tersi olamaz 2. Projeler kuruluşlara ait olabilir ancak kullanıcılara
ait olmayabilir 3. Depolar kuruluşlara ve kullanıcılara ait olabilir

Ayrıca bakınız:

Kafa karıştırıcı olduğunu biliyorum. Bunu olabildiğince açıklamaya çalıştım.


Atlassian'ın Bitbucket'inde, ilgili depolardan oluşan bir aileyi kapsayan projeler oluşturabilirsiniz. Github'da bu örgütsel özellik var mı? Github Projelerinden bu şey olmasını bekliyordum, ama öyle değil. Github'da bu organizasyonu nasıl mümkün kılacağımı anlayamıyorum. Ben am çok bu sadece bir öğrenme eğrisi olabilir, böylece Bitbucket için kullanılır.
Ungeheuer

Belli bir şekilde, bir projenin birden fazla depoya sahip olması benim için daha anlamlı olur. GitHub'ın yaşlandığını fark ettiği ve tam bir yeniden tasarım yapmak yerine sadece bir geçici çözüm oluşturmayı ve iyi bir şey olarak satmayı seçtiğini düşünüyorum. Bu arada, şu anda GitHub'ın sahibi kim? Belki de cevap bunun neden olduğu hakkında bazı ipuçları veriyor. Sadece yüksek sesle düşünmek.
Almir Campos

19

GitHub Depoları, önem verdiğiniz tüm dosyaları, klasörleri ve diğer kaynakları saklamak için kullanılır.

Git Projesi: Ayrıca Git Deposu'ndaki Kaynaklardan biridir ve ana kullanımı projeleri görsel bir tahta ile yönetmektir. Git Deposunda bir proje oluşturursanız, projeyi yönetmek için Kanban panosu gibi bir görsel pano oluşturur.

Bu şekilde, bir depoda birden fazla projeniz olabilir.


4

Genel olarak GitHub'da 1 havuz = 1 proje . Örneğin: https://github.com/spring-projects/spring-boot . Ama bu zor bir kural değil.

1 depo = birçok proje . Örneğin: https://github.com/donhuvy/java_examples

1 proje = birçok depo . Örneğin: https://github.com/zendframework/zendframework (Zend Framework 3 adlı 1 proje 61 + 1 = 62 depoya sahiptir, inanmayın? Zend Frameworks modüllerini + ana depoyu saymaya izin verin)

Tamamen katılıyorum @Brandon Ibbotson 'ın comment :

GitHub deposu, klasörlerin ve dosyaların bulunabileceği bir "dizin" dir.


Yanıtınız için teşekkürler. Ancak, proje tanımınızın GitHub'ın proje olarak adlandırdığı şey olduğunu düşünmüyorum, çünkü çoklu proje havuzlarının örnekleri bu depolar için Projeler sekmesinde hiçbir şey göstermiyor. Bu konuyu biraz açıklayabilir misiniz?
carlossierra

2
Aslında, Zend Framework kullanan örnek tamamen yanlış! GitHub'ın isimlendirmesine göre, "zendframework" adında bir kuruluş, "zendframework" olarak adlandırılan ve çerçevenin her modülü için bir de dahil olmak üzere birçok depoya sahip.
igorcadelima

3
9 Kasım 2017: 1 havuz örneği = birçok proje 404 döndürüyor.
Bram Vanroy

1
bağlantıları kopuk
Pmpr

1
GitHub açısından, bu cevap yukarıdaki diğer popüler cevaplarla çelişiyor.
Manohar Reddy Poreddy

1

Git sözlüğü ile ilgili olarak, Proje gerçek içeriğin (dosyaların) yaşadığı klasördür. Oysa Deposu (repo) git yapılmıştır her değişiklik kaydını tutar hangi iç klasördür proje klasöründe. Ancak genel anlamda, bu ikisi aynı kabul edilebilir. Proje = Depo


1

Anladığımdaki kavramsal fark, bir projenin birçok repo içerebileceği ve birbirinden bağımsız olabileceği gibi, aynı anda bir repo birçok proje içerebilir. Repo sadece kod için bir depolama alanı, bir proje ise belirli bir özellik için bir görevler topluluğudur.

bu mantıklı mı? Büyük bir repo aynı anda farklı insanlar tarafından çalışılan birçok projeye sahip olabilir (bir monolite birçok farklı özellik eklenir), büyük bir projenin ayrı ama aynı projenin her biriyle etkileşim halinde olan birçok küçük deposu olabilir. diğer - mikro hizmetler? Onun ne yapmak istediğiniz üzerinde kişisel bir almak. Bence repo (depolama) vs proje (görevler) temel fark - eğer yanlışsam lütfen bana bildirin / açıklayın! Teşekkürler.


0

Bu konu hakkındaki kişisel anlayışım.

Bir proje için, sürüm havuzunu farklı depolarla yapabiliriz. Ve bir havuz için, tüm bir projeyi veya projelerin bir kısmını yönetebilir.

Projenize ilişkin olarak (her birinden bağımsız birkaç prototip uygulaması). Projeyi tek bir havuzla veya birkaç havuzla yönetebilirsiniz, fark:

  1. Tek bir depo ile yönetin. Uygulamalardan biri değiştirilirse, tüm proje (tüm uygulamalar) yeni bir versiyona bağlanacaktır.

  2. Çeşitli depolarla yönetin. Bir uygulama değiştirilirse, yalnızca uygulamayı yöneten havuzu etkiler. Diğer depoların sürümü değiştirilmedi.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.