GitHub'da Git Proje Bağımlılıkları


14

Çerçevenin üstüne bir PHP çerçevesi ve bir CMS yazdım. CMS çerçeveye bağımlıdır, ancak çerçeve CMS dosyalarında bağımsız bir klasör olarak bulunur. Onları GitHub'da ayrı projeler olarak korumak istiyorum, ancak çerçeveyi her güncellediğimde CMS projesini güncellemenin karışıklığını yaşamak istemiyorum. İdeal olarak, CMS'nin bir şekilde fiziksel olarak bu dosyaları işlemek yerine önceden tanımlanmış bir alt dizine dahil edilmesi için çerçeve dosyalarını çekmesini istiyorum.

Git / GitHub ile bu mümkün müdür? Öyleyse, çalışmasını sağlamak için ne bilmem gerekiyor? Git ile çok, çok temel bir deneyim düzeyimde olduğumu unutmayın - Eclipse için Git eklentisini kullanarak depolar yapabilir ve çalışabilirim, GitHub'a bağlanırım ve hepsi bu kadar. Şu anda projelerde yalnız çalışıyorum, bu yüzden Git hakkında daha fazla şey öğrenmek zorunda kalmadım, ancak gelecekte başkalarına açmak istiyorum ve doğru yaptığımdan emin olmak istiyorum.

Ayrıca, bağımlılığı olan projeler için ideal iş akışım ne olmalı? Bu konuyla ilgili herhangi bir ipucu da çok takdir edilecektir. Kurulumum hakkında daha fazla bilgiye ihtiyacınız varsa, yorumlarda sorun.


Burada bahsedildiği gibi git subtree'ye göz atın
Nick

Yanıtlar:


11

İlk olarak, bunun için git'i gerçekten kullanmak istiyorsanız, Submodule işlevini kullanmayı düşünün :

Git'in alt modül desteği, bir havuzun bir alt dizin olarak harici bir projenin çıkışını içermesine izin verir. Alt modüller kendi kimliklerini korurlar; alt modül desteği sadece alt modül veri havuzu konumunu ve taahhüt kimliğini saklar, böylece içeren projeyi klonlayan diğer geliştiriciler ("süper proje") aynı alt sürümde tüm alt modelleri kolayca klonlayabilir. Süper projenin kısmi kontrolleri mümkündür: Git'e alt modüllerin hiçbirini, bir kısmını veya tamamını klonlamasını söyleyebilirsiniz.

Bağlantı verilen sayfa, tam olarak nasıl kullanılacağına ilişkin örnekleri içeren ayrıntılı bir tartışma içerir.

Bununla birlikte, bağımlılık yönetimi için sürüm kontrol sisteminizi kullanmamanızı ve Maven veya Ant gibi bu şeyleri sizin için halledebilecek bir oluşturma aracı kullanmaya başlamayı öneririm . Phing adı verilen geliştirmede PHP'ye özgü bir oluşturma aracı bile var , ancak henüz kendim kullanmadım. Sorunuzu tartışan bir makalede bahsedilmiştir: Sürüm Kontrolü! = Bağımlılık Yönetimi .

Oluşturma araçlarının uzun vadede daha iyi uymasının nedeni, genellikle farklı havuz türlerini, dış kütüphaneleri (ve farklı konumları) ve kapsamlı denetimi de desteklemesidir. Bununla birlikte, sadece bu iki kütüphaneyi entegre etmek istiyorsanız ve herhangi bir ek güçlük istemiyorsanız, alt modül yaklaşımı muhtemelen yeterlidir.


+1 - Teşekkürler Deckard. Git'in Submodules gibi bir şey olduğunu düşündüm, ne denir bilmiyordum. Phing'e kesinlikle uzun bir göz atacağım. Bağımlılıkları yöneten, birim testleri çalıştıran ve daha sonra siteme dağıtan bir PHP oluşturma aracı istiyorum. Phing muhtemelen tüm bunları yapabilir gibi görünüyor. Ayrıca öğrenmesi biraz zaman alacak gibi görünüyor. Phing için iyi bir screencasts biliyor musunuz (Google bu konuda nazik değildir)?
VirtuosiMedia

"Alt modül işlevselliği" bağlantısı bozuldu ve "Sürüm Kontrolü! = Bağımlılık Yönetimi" bağlantısı da kesildi
Ferrybig

6

Git Submodules git proje bağımlılıklarını yönetmenin harika bir yoludur.

Başka bir yaklaşım arıyorsanız:

Besteci bunu sizin için yapabilir. Besteci php için bağımlılık yöneticisidir. Sözdizimi json. Kullanımı oldukça kolay ve ucuz.

Besteci hakkında daha fazla bilgi:

Composer PHP'de bağımlılık yönetimi için bir araçtır. Projenizin ihtiyaç duyduğu bağımlı kütüphaneleri beyan etmenizi sağlar ve sizin için projenize kuracaktır.

Açık doküman sayfasına , size composer.json dosya inşa edilecek nasıl kullanıldığını açıklayan bir örnek bulabilirsiniz:

// Composer.json    
{

    "name": "acme/blog",
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/composer/hello-world"
        }
    ],
    "require": {
        "acme/hello-world": "dev-master"
    }
}

Projeniz için composer.json ve composer.lock dosyanızı oluşturduktan sonra, kolayca bağımlılıklarınızı kolayca yükleyebilirsiniz:

composer.phar install veya güncelleyin: composer.phar update ya da ambalajcıdan belirli bir proje oluşturun : composer.phar create-project acmeproject


1

Son zamanlarda Projemin Bağımlılıklarını yönetmek için Pundle adlı bir araç kullanmaya başladım . Bağımlılıklar olarak bir PHP Sürümü, PEAR Paketleri, Git Depoları ve SVN Depolarını destekler ve bunları bir "Pundlefile" aracılığıyla kolayca belirtmeye izin verir.

Ayrıca Bağımlılıklarınızı Git / SVN ödünç alma işlemlerini Sürüm Denetimi altında olmayan bir dizine (örneğin "satıcı") yerleştirecek şekilde yapılandırmanız gerekir, böylece her kasada yeni bir başlangıç ​​yapar ve Proje havuzunuzu yalın halde tutarsınız.

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.