Kişisel Git depolarını nasıl düzenleyebilirim?


20

Diğer iOS geliştiricilerinin kullanması için ücretsiz olarak sunulan bazı iOS projelerinin bir parçası olarak geliştirdiğim bir çift kütüphaneyi yapma planı ile bir GitHub hesabı oluşturma sürecindeyim.

Şu anda kodumun çoğu için site dışı yedeklemem yok, bu yüzden bunun bir parçası olarak, aslında tüm kişisel projelerimi veya en azından tüm iOS projelerimi özel bir GitHub tarafından barındırılan depoya yükleyeceğimi düşündüm. . Ancak, bir var çok (kitaplardan uyarlanan ve öğrenme deneyimi için yazılmış yani) oldukça düşük değerli bunların çoğu oturup projelerinin. GitHub yalnızca özel depo tarafından ücretlendirmekle kalmaz, aynı zamanda depoları hiyerarşik olarak düzenlemenin herhangi bir yolu yoktur.

Şu anda SVN ile yaptığım gibi, bir hiyerarşiyle git deposunu kullanmam ve onlara ihtiyaç duyduğum / onlarla çalışmam için parçaları kontrol etmeme izin verecek bir şey eksik mi?

GitHub (veya BitBucket gibi bir rakip) eksik olduğum bazı proje organizasyon özelliklerine sahip mi?

Başarısız olursa, bu durumu ele almanın genel olarak kabul edilen "Git yolu" nedir (serbest bırakılması amaçlanmayan projeleri atın, çevrimdışı saklayın, bir şekilde bir araya toplayın, vb.)?

Anlayabildiğim kadarıyla seçeneklerim:

  1. GitHub'a kütüphaneler koyun, diğer tüm projeler için kendi SVN'mi barındırmaya devam edin, site dışı yedekleme (Vuruş) için VCS olmayan bir çözüm kullanın,
  2. GitHub'da yayınlamayı planladığım kütüphaneleri ve yazılımları (sırasıyla kamu ve özel olarak) koyun, umursadığım projeler için kendi SVN'mi barındırmaya devam edin ve sadece XYZ'nin nasıl uygulanacağı konusundaki belleğimi yenilemek için tekrar ziyaret edeceğim, evim patlarsa (çift blech) onları yazmaya istekli olduğuma karar ver,
  3. Her şeyi [GitHub ve / veya BitBucket] 'e koyun, ihtiyacım olanı arayarak / bazı işaretçiler kümesini [GitHub ve / veya BitBucket] hesabımla (üçlü blech) koruyarak gülünç sayıda depoya sahip olun.

2
Burada kaç tane depodan bahsettiğimizi merak ediyorum. "İşaretçiler" ile ne demek istiyorsun?
03:19

Bu eski bir soru olduğundan, bitbucket ücretsiz organizasyonlar oluşturmanıza izin verir ve bunlarda depoları olabilecek projeler olabilir. Kuruluşlar belirli sayıda kullanıcıya kadar ücretsizdir. İzinleri org / project / repo ile yönetebilirsiniz.
xenoterracide

GitHub'ın artık ücretli planları ile sınırsız özel depolar sunduğunu unutmayın.
Jack

Yanıtlar:


11

bitbucket.org sınırsız özel depo oluşturmanıza izin verir.

Git, sadece bazı kod parçalarına göz atmanıza izin vermez. Bu nedenle, her proje için bir repo oluşturmanız veya tüm projeleri klonlamakla uğraşmanız gerekir. Gerçekte, tüm küçük projelerimizi tek bir repoya yerleştirmeyle ilgili bir sorun görmüyorum. Bir kez klonladınız ve işiniz bitti.

Git ile yerel deponuzu havaya uçurmadığınız veya başka bir makineye gitmedikçe kodu bir daha "kontrol etmeniz" gerekmez. Tüm değişikliklerinizi senkronize edeceksiniz.

Çok sayıda veri havuzuyla ilgili simüler bir sorunum var. Hepsini tek bir depoda saklayamamamın nedeni, her bir depodan farklı sürümleri ayırmam gerektiğidir. Yönetmek çok zor.


Doğru, doğru ... Özel projeler için BitBucket kullanmaya açık olduğum için, GitHub'ı özellikle çağırmamalıydım. Soruyu daha az belirgin hale getirmek için biraz düzenledi.
Arkaaito

5

Kısa cevap ...

Benim önerim: GitHub ve / veya Bitbucket'teki genel hesaplarla başlayın (diğer?). Birkaç kamu projesi atın ve araçları / arayüzleri kullanmaya başlayın. Hizmetler için bir fikir edindikten sonra, her hizmetin sınırlamalarının, avantajlarının ve dezavantajlarının ne olduğunu kavramanız gerekir. Oradan, sürüm kontrolü aydınlanmasına giden en iyi yolu seçebilmelisiniz. :)


Uzun cevap ...

Şu anda kodumun çoğu için site dışı yedeklemem yok, bu yüzden bunun bir parçası olarak, aslında tüm kişisel projelerimi veya en azından tüm iOS projelerimi özel bir GitHub tarafından barındırılan depoya yükleyeceğimi düşündüm. . Bununla birlikte, birçoğu oldukça düşük değerli (yani kitaplardan uyarlanmış ve öğrenme deneyimi için yazılmış) birçok projem var.

Kendi Git istemcinizi kurmayı düşündünüz mü? Zaten web hosting için ödeme yapıyorsanız, o zaman kendi Git kurulumunuz için bu ana makineyi kullanmak mantıklı olabilir.

Örneğin, sunucum WebFaction (bağlılık yok):

Git Web Uygulamasını Yükleme

Bu rotaya gitmeniz bazı $$$, esp. zaten barındırma için ödeme yapıyorsanız.

GitHub sadece özel depo tarafından ücretlendirmekle kalmaz,

Başkaları için açıklığa kavuşturmak için (yine GitHub veya BitBucket'e iş ilişkisi yoktur):

GitHub: Planlar ve Fiyatlandırma

  • 7 $ / ay. 5 özel depoya kadar her şey için sınırsız.
  • 12 $ / ay. 10 özel depoya kadar her şey için sınırsız.
  • 12 $ / ay. 20'ye kadar özel depo için , her şey sınırsız.

"İş Planları" fiyatlandırmasının farklı olduğunu unutmayın.

Atlassian'dan Bitbucket için Git ve Mercurial repo hosting fiyatları

Andrew tarafından diğer cevapta belirtildiği gibi, Bitbucket sınırsız özel depolar sundu.

  • 5 kullanıcı: Ücretsiz
  • 10 kullanıcı: aylık 10 ABD doları.
  • 25 kullanıcı: aylık 25 ABD doları.
  • 50 kullanıcı: aylık 50 ABD doları.
  • 100 kullanıcı: 100 $ / aylık.
  • Sınırsız 200 $ / aylık.

depoları hiyerarşik olarak organize etmenin bir yolu yok gibi görünüyor.

"Hiyerarşik" ile ne demek istediğinizi tam olarak bilmiyorum (muhtemelen SVN'ye aşina olmadığım için).

Bunun yardımcı olup olmayacağından emin değilim, ancak komutların nasıl karşılaştırıldığını / farklılaştığını görmek için bu karşılaştırma tablosuna bakabilirsiniz:

Şu anda SVN ile yaptığım gibi, bir hiyerarşiyle git deposunu kullanmam ve onlara ihtiyaç duyduğum / onlarla çalışmam için parçaları kontrol etmeme izin verecek bir şey eksik mi?

Dallanma?

GitHub (veya BitBucket gibi bir rakip) eksik olduğum bazı proje organizasyon özelliklerine sahip mi?

Bunun yardımcı olup olmayacağından emin değilim, ancak şunlara göz atabilirsiniz:

Git, yürütmek ( git-gui ) ve tarama ( gitk ) için yerleşik GUI araçlarıyla birlikte gelir , ancak platforma özgü deneyim arayan kullanıcılar için birkaç üçüncü taraf aracı vardır.

... yine, bu araçlardan herhangi birinin mümkün olanı hissetmenize yardımcı olup olamayacağından emin değilim.

Açık olmak gerekirse, Git beceri seviyenizden emin değilim ... Git / GitHub'da yeniyseniz, GUI kullanmak, bir şeyler hissetmeniz için hızlı / kolay bir yol olabilir. Şahsen Mac / Windows için resmi GitHub uygulamalarını kullanmayı seviyorum.

Başarısız olursa, bu durumu ele almanın genel olarak kabul edilen "git yolu" nedir (serbest bırakılması amaçlanmayan projeleri atın, çevrimdışı saklayın, bir şekilde bir araya toplayın, vb.)?

Ben olsaydım, depoları kullanırdım.

Kaç tane özel depoya ihtiyacınız var?

GitHub'ı kullanmak istiyorsanız, çözümlerden biri en ucuz planı almak ve tüm test / genel olmayan kodunuzu tutmak için birkaç özel depo kullanmak olabilir. mainHiyerarşik bir yapı sağlamak için dalınızdaki bir klasör yapısını kullanabilir veya işleri daha ayrı tutmak için birden çok dal kullanabilirsiniz.

İpucu: Git'in daha yeni bir sürümünü kullanıyorsanız, aşağıdakileri kullanarak belirli dalları çekebilirsiniz git clone -b mybranch --single-branch git://sub.domain.com/repo.git:

Sizi uyarmalıyım, kodu düzenlemek için şubeleri kullanmak (klasörler gibi) gerçekten bir şeyler yapmanın en iyi yolu değil (yine de, bu rotaya gidemeyeceğinizi söyleyen hiçbir şey yok).

( GitHub şubeleriyle ilgili bilgiler için cevabımı burada görün. )

Yine, çoklu depoların gidilecek yol olduğunu düşünüyorum.

Kodunuzun gerçekten özel olması gerekip gerekmediğini kendinize sorabilirsiniz; herhangi bir yansıma olmadan söz konusu kodla halka açılmanız mümkün mü?

GitHub'a kütüphaneler koyun, diğer tüm projeler için kendi SVN'mi barındırmaya devam edin, site dışı yedekleme (Vuruş) için VCS olmayan bir çözüm kullanın,

Bu rotaya gidiyorsanız Dropbox (veya benzeri), site dışı yedeklemeniz için bir çeşit sürüm kontrolü ve senkronizasyonu almanın iyi bir yolu olabilir.

GitHub'da yayınlamayı planladığım kütüphaneleri ve yazılımları (sırasıyla kamu ve özel olarak) koyun, umursadığım projeler için kendi SVN'mi barındırmaya devam edin ve sadece XYZ'nin nasıl uygulanacağı konusundaki belleğimi yenilemek için tekrar ziyaret edeceğim, evim patlarsa (çift blech) onları yazmaya istekli olduğuma karar ver,

Bu da beni "Barındırma için zaten ödeme yapıyor musunuz? Öyleyse kendi Git sunucunuzu kurabilirsiniz" sorusuna geri götürür; avantajı, hepsi aynı ana bilgisayarda olmasa bile, Git kaynak şemsiyesi altında tüm kaynak koduna sahip olabilirsiniz (örneğin, göstermek istediğiniz genel şeyler için GitHub'ı kullanın).

Her şeyi [GitHub ve / veya BitBucket] 'e koyun, ihtiyacım olanı arayarak / bazı işaretçiler kümesini [GitHub ve / veya BitBucket] hesabımla (üçlü blech) koruyarak gülünç sayıda depoya sahip olun.

---> Yukarıdaki kısa cevabımı görün. ^^^^^^


0

İşte yaptığım şey:

  • Herkese açık hale getirmek istediğiniz bağımsız projeleri ayrı GitHub depolarına koyun . GitHub şu anda kod paylaşmak için fiili bir yer olduğundan, projelerinizi daha kolay keşfedilebilir / kolaylaştıracak.
  • Gizli tutmak istediğiniz tüm projeler için, bunları sağlayıcınız tarafından barındırılan özel depolara koyun. Daha önce de belirtildiği gibi, Bitbucket sınırsız özel depolara izin verdiği için bunun için iyi bir seçimdir.
  • Diğer tüm kodları "gereksiz" depoya koyun. Bu, öğrenme ve test için kullanılan kodu ve bir projenin parçası olmayan küçük parçacıkları içerebilir. Bunu gizli tutmak için bir neden olmadığı sürece, bu repo'yu GitHub'da da barındırabilirsiniz.

    Sürüm kontrolünün (SVN ile zaten sahip olduğunuz) tüm olağan avantajlarına ek olarak, şimdi kodunuz çevrimiçi olarak yedeklenir. Önemsiz kodlarınızdan herhangi birinin bir projeye dönüşmesi durumunda, sadece kendi repo'suna dönüştürebilirsiniz.

    Bu kodu ayrı depolara koyabilir veya git submodules veya subtrees gibi süslü bir şey kullanabilirsiniz, ancak hepsini tek bir repoda saklamanın ve klasörleri kullanarak organize etmenin en kolay olduğunu düşünüyorum. Çok daha basit ve git, repo büyüklüğünün bir sorun olmaması için yeterince hızlı.


0

Olası bir teknik dal kullanmaktır.

Git deposundaki şubeler sadece taahhütlerin göstergesidir, hiçbir şekilde birbirleriyle ilişkili olmaları gerekmez. Böylece barındırma hizmetinde bir "minorprojects" repo oluşturabilir ve daha sonra her proje için bu repoda bir şube kullanabilirsiniz. Küçük bir proje büyürse şubeyi kendi repolarına kolayca taşıyabilirsiniz.

Yerel olarak şubeleri ayrı yerel depolarda tutabilirsiniz (yerel ve uzak depolar arasında 1: 1 eşleme olması gerekmez) veya tek bir yerel depoya sahip olabilir ve birden çok çalışma ağacını korumak için git worktree'yi kullanabilirsiniz. Şahsen ben ilk yaklaşımın daha az hataya eğilimli olduğundan şüpheleniyorum.


Onları aynı uzak depoda saklamak aynı yerel depoyu kullanmanız gerektiği anlamına gelmez.
Peter Green

Sadece son yorumumu unut. git worktreeBir havuz için ek çalışma ağaçları oluşturmanıza izin veren ve aynı anda birkaç şubenin kontrol edilmesini sağlayan komutu öğrendim . Bununla, yaklaşımınızın dezavantajları temel olarak kaybolur: Sadece her bağımsız dal için bir çalışma ağacı oluşturun ve bunları bağımsız depolar gibi kullanın. Cevabınıza eklemek için iyi bir fikir olabilir :-)
cmaster - reinstate monica

@cmaster, done ...
Peter Green
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.