Donanım Hackerları İçin Git Girişi


Git, projenizin etkisini çoğaltabilen veya projenizin büyük ölçüde yönetilmesini kolaylaştıran harika bir araçtır. Bazı bilgisayar korsanları, Git komut satırının nasıl kullanılacağını henüz bilmiyoruz, ancak belirli bir aracın neden yararlı olacağına dair ilgili bir örnek iyi bir başlangıç ​​olabilir. Bugün size bir Git hızlandırılmış kursu vermek istiyorum – size KiCad PCB’yi Git deposuna neden ve nasıl yerleştireceğinizi ve daha sonra dünyayla paylaşılacağını göstermek istiyorum.

KiCad, Git ile harika bir şekilde çalışır. KiCad’in şematik ve PCB dosyaları, özellikle diğer PCB dosya formatlarıyla karşılaştırıldığında insan tarafından okunabilir. KiCad, her biri iyi tanımlanmış bir role sahip farklı amaçlar için farklı dosyalar oluşturur ve proje klasörünüzdeki her dosyayı anlamlandırabilirsiniz. Dahası, bir metin düzenleyicide KiCad dosyalarını bile değiştirebilirsiniz! Bu tam olarak Git’in bir eldiven gibi oturduğu türden bir kullanım durumudur.

Sadece Yazılım Geliştiricileri İçin Değil

Git neyle ilgili peki? Temel olarak, Git bir projedeki kod değişikliklerini takip etmenize ve bu değişiklikleri birbirinizle paylaşmanıza yardımcı olan bir araçtır. İlk hedefi olarak Linux çekirdeği geliştirmeye yöneliktir, bunun için tasarlanmıştır, ancak esnekliği yazılım projelerinin çok ötesine uzanır. Biz donanım korsanları bunu çeşitli şekillerde kullanabiliriz – PCB ve diğer tasarım yazılım dosyalarını, blog makalelerini, proje belgelerini, kişisel notları, yapılandırma dosyalarını ve Git çalışma biçimine belli belirsiz uyan her şeyi depolayabiliriz.

Jolly Wrencher'ın (Hackaday sembolü) KiCad PCB dosyalarını gösteren bir dosya gezgininin ekran görüntüsü.
Doğal olarak, bu dosyaların güvenli ve hatasız bir şekilde saklanması önemlidir.

Git’i kullanmanın ilk faydası projenizin yedeği olacaktır. Aslında, git değişikliklerinizi bir yere yüklerseniz, projenizin iki fazladan kopyasını alırsınız – biri yerel dosyanızda saklanır. .git klasör ve biri GitHub veya GitLab gibi bir yere yüklendi. Aslında, bir çevrimiçi ayna ile Git’te depolanan bir proje, 3-2-1 yedekleme ilkesi otomatik olarak. Dahası – yakın mesafede geçmişe dönük yedekler alırsınız. PCB’nizi uzun zaman önce yeniden tasarladınız ve şimdi acilen önceki bir sürüme mi başvurmanız gerekiyor? Değişikliklerinizi Git’te tuttuğunuz sürece, bunlar tek komut uzaktadır.

Birçok kişi ayrıca yapılandırma dosyalarını Git’te depolar – bu uygulamanın şu şekilde adlandırıldığını duymuş olabilirsiniz. nokta dosyaları. Bunu yapmak, yaptığınız tüm yapılandırma değişikliklerini takip etmenize yardımcı olur. Konfigürasyon dosyasındaki parametreleri yeniden birleştirerek karmaşık bir yazılım parçasının (örneğin bir web sunucusunun) hatalarını ayıkladıysanız, eskiden işe yarayan bir değişikliği unutup titizlikle uyarlanmış bir konfigürasyonu kaybetmenin ne kadar acı verici olabileceğini bilirsiniz. dosya tamamen farklı bir düzeyde acıdır. Kemerinizin altındaki birkaç Git komutuyla, kaçınabileceğinizi asla bilmediğiniz bir acı dünyasından kaçınırsınız.

Biz bilgisayar korsanları çoğu zaman birbirimizin yardımına ihtiyaç duyarız ve bu gibi durumlarda Git’in işbirliği yetenekleri rakipsizdir. Diyelim ki kendinizi dünya çapında bir bilgisayar korsanıyla birlikte bir PCB projesi üzerinde çalışırken buluyorsunuz. Git ile en son değişikliklerinizi yüklemek için yalnızca bir komuta ihtiyacınız var ve iş arkadaşınızın bunları indirmek için bir komuta ihtiyacı var. Her ikiniz de çakışacak şekilde değişiklikler yaptıysanız (örneğin, aynı ayak izini farklı bir şekilde düzenlediyseniz), Git’in değişiklik kümesi çakışma çözümü için zengin bir araç takımı vardır, bu da ikinizin de üst düzey tasarım hakkında tartışarak harcayabileceğiniz değerli zamanı boşaltmasını sağlar. sorun.

Hacker, Git ile Tanış – Git, Hacker ile Tanış

Başlangıç ​​için – bir PCB projeniz var ve Git kabuğu kurdu seçtiğiniz işletim sisteminizde. Ayrıca terminalinizin temellerini bildiğinizi varsayıyorum – dizinden dizine geçmek ve dosyaları açmak, daha fazlasına ihtiyacımız olmayacak. Git, başlamadan önce yapılandırılan birkaç küçük değişkene ihtiyaç duyar – hadi bunu çözelim ve bunu test etmek için bir fırsat olarak kullanalım. git seçtiğiniz konsolda da işlevler.

Git, değişikliklerinizi izlemek için adınızı ve e-posta adresinizi bilmek ister – bunların gerçek olması gerekmez. Değişikliklerinizi GitHub/GitLab/etc’ye gönderirseniz, hem ad hem de e-posta, depo içeriğini yüklediğiniz yerden indirebilen herkes, yani genellikle herkes tarafından erişilebilir olacaktır. Bunun için takma adımı ve herkese açık eski e-posta adresimi işbirliği ve “bu proje hakkında bana ulaşın” amaçlarıyla kullanıyorum – aynısını yapabilirsiniz veya hiçbir zaman yükleme yapmayacaksanız yalnızca John Doe varsayılanlarını kullanabilirsiniz. İşte çalıştırmanız gereken komutlar, buradan alındı:

git config --global user.name "John Doe"
git config --global user.email [email protected]

Olmak --global, bu değişikliklerin Git çalışması için kullandığınız her makinede yalnızca bir kez yapılması gerekir. Bu ikisine ek olarak, hızlı değişiklikler yapmak için hangi metin düzenleyiciyi tercih ettiğinizi Git’e bildirmenize yardımcı olur – bunlar sık ​​sık çağrılır. Linux’ta, git commit için varsayılan düzenleyicinizin zaten Vi’ye ayarlı olduğunu görebilirsiniz – ne olduğunu bilmiyorsanız :wq! anlamına gelir, koşmaktan çekinmeyin git config --global core.editor nano daha samimi bir seçenek için. Windows’ta, yapmak isteyeceksiniz işleri biraz farklı yapın.

Artık başlamaya hazırsınız. Terminalinizde, PCB projenizin depolandığı klasöre gidin. Tip git init ve Enter’a basın. İşte bu – proje klasörünüz artık bir Git deposu!

Değişikliklerinizi Ekleme

Buradan Git, proje dosyalarınızı henüz takip etmez. Koşmak git statusve “izlenmeyen” olarak işaretlenmiş bir grup dosya görün. git status Onları izlemeye başlamak için ne yapmanız gerektiğini size yardımcı bir şekilde söyler – aslında, bu komut, çıktıdan da görebileceğiniz gibi, Git’e yeni başlayanlar için oldukça iyi bir tutuş sağlar. Önem verdiğimiz dosyaları ekleyelim – yani, .kicad_prl dosya ve -backups/ dizin!

$ git add jolly_wrencher.svg
$ git add jolly_wrencher.kicad_mod
$ git add jolly_wrencher_pcb.kicad_pro
$ git add jolly_wrencher_pcb.kicad_pcb
$ git add jolly_wrencher_pcb.kicad_sch
$ git status

Bu dosyalar Git’in izlediği listeye eklendi, ancak henüz projenin Git geçmişine önemli bir şekilde dahil edilmediler. Bunun için, bir grup dosya değişikliğini kaydeden bir taahhütte bulunmamız gerekiyor. Bunun gibi bir depo başlatırken, genellikle bir “ilk” taahhütte bulunursunuz – bunun için çalıştırabilirsiniz git commit -m "Initial commit"nerede -m parametre, değişikliklerin ne anlama geldiğini açıklayan, insan tarafından okunabilen bir mesajdır. Ayrıca yapabilirsin git commit ve mesajı ayrı bir düzenleyicide yazın – sizin için neyin daha rahat olduğunu görün. Dosyalar daha önce taahhüt edilmediğinden, bütünlükleri içinde saklanacaktır.

Biraz Bağlılık

Taahhüt, değişiklikleri mantıksal olarak gruplandırmanın bir yolu olan bir tür “iş birimi” dir. Projenizin gelişiminin farklı aşamaları olarak projenizin geçmişindeki taahhütler arasında gezinebilir, taahhüt içeren bazı tweaks’leri farklı bir dalda ayırabilirsiniz, böylece projenizin birden fazla farklı versiyonunu sorunsuz bir şekilde bir arada var olabilir, taahhütleri depolar arasında aktarabilir, dışa aktarabilir ve e-posta ile gönderebilirsiniz. , ve çok daha fazlası.

Farklı taahhütlerde mantıksal olarak farklı değişiklikler yapmak mantıklıdır. Diyelim ki PCB’nizdeki serigrafiyi iyileştiriyorsunuz ve ayrıca bir lisans dosyası ekliyorsunuz. İlk olarak, kendi .kicad_pcb dosyalayın ve “serigrafi: eklenen pinouts” mesajı ile taahhüt edin; sonra kendin ekle LICENSE.txt dosya ve “ek lisans” olarak kabul edin. Bu, projenizin geçmişini gözden geçirmenize, hataları izlemenize ve sayısız başka şeye yardımcı olur.

Eğer koşarsan git log, taahhütlerin listesini göreceksiniz. Karmalarını kullanarak, projenizin daha eski bir sürümüne ihtiyacınız olduğunda, taahhütler arasında geçiş yapabilirsiniz. Bunun için yap git checkout HASHCHARS, burada “HASHCHARS”, taahhüt karmanızın en az yedi ilk karakteridir (daha fazlası olabilir!). Projenizin en son durumuna geri dönmek için şunu yapın: git checkout HEAD.

Her Şeyi İzlemenize Gerek Yok

git status hala bize gösteriyor .kicad_prl ve izlememiz gerekmeyen yedekleme dizini – bu ikisi anlamlı değişiklikler içermiyor. Bu iki tür dosyayı yok saymak için bir .gitignore projenizin ana dizininde dosya (nokta ile başlayan ad) ve şu iki girişi yerleştirin:

*.kicad_prl
*-backups/

Gördüğünüz gibi, orada çok basit bir desen eşleştirmesi yapabilirsiniz, ancak gerçek proje dosya adlarını da koyabilirsiniz – bunları yazmak istemedim ve kopyalamak isterseniz daha genel sürüm kullanışlı olacaktır- yapıştırmak. git status bu dosyaları göstermeyi zaten durduracak ve siz ekledikçe ve taahhüt ettikçe .gitignore dosya, bu iki giriş kalacak. Karşılaşacağınız çoğu vakayı kapsayan KiCad’e özgü bir gitignore dosyası mı istiyorsunuz? GitHub bir tane sunuyor.

Git’te ikili dosyaları izlemek, proje klasörünüzü beklemeyeceğiniz bir şekilde büyütmenizi sağlar

Git ikili dosyaları anlamaz – anlamlı bir şekilde değişen, insan tarafından okunabilen metin dosyaları için tasarlanmıştır. KiCad PCB dosyaları bu kriterlere uygundur – diğer pek çok dosya uymaz. Mesele şu ki, bir ikili dosyanın her bir sürümü, süresiz olarak dosyanızın içinde bir kopya olarak kalacaktır. .git klasör, ikili dosyayı yeni bir sürümle güncelledikten sonra uzun süre kalır. saklamak istemezsiniz .zip bu, projenizin git deposunda sık sık değişir ve gerber dosyalarını da orada depolamak istemezsiniz. Sadece fazladan yer ve zaman alır.

Ücretsiz Ekstra Özellikler

git’in sürüm oluşturma yetenekleri, PCB geliştirmede kullanışlıdır ve kullanımı daha da konforlu hale getiren birçok güzel özellik vardır. Örneğin, proje sürümleri arasında daha hızlı geçiş yapmak istiyorsanız, taahhütlere etiketler ekleyebilirsiniz. PCB’nizin bir v2’sini mi geliştirdiniz, ancak yine de müşteri desteği nedenleriyle v1 dosyalarına başvurmanız mı gerekiyor? Yapmak git tag v2 mevcut taahhüdü “v2” olarak etiketlemek ve git tag commit v1 HASHCHARS PCB’nizin hala v1.1’de olduğu bir taahhüdü işaret ediyor. Şimdi, yapabilirsin git checkout v1 ve git checkout v2 sürümler arasında gerektiği gibi atlamak için.

Diyelim ki, varsayımsal olarak, bir taahhütte bulundunuz. README.md dosya – iyi bir uygulama (kullanmaktan çekinmeyin PCB README şablonum!). Ayrıca, argüman uğruna, proje dizininize bazı resimler eklediğinizi ve bunları README’ye bağladığınızı varsayalım. Diyelim ki, ayrı bir işleme ait olan tamamen ilgisiz bazı değişiklikler eklemek için BENİOKU’yu da düzenlediniz – belki de PCB üzerindeki bir bağlayıcıyı değiştirdiniz ve bunu BENİOKU’ya yansıttınız. Aynı dosyada yaptığınız mantıksal olarak farklı değişiklikleri nasıl ayırırsınız? Kullanmak git add --patch README.md dosyanın hangi bölümlerinin ekleneceğini etkileşimli olarak seçmek ve seçmek için.

Bir şey taahhüt etti ve son taahhüdün mesajını değiştirmek mi istiyorsunuz? Kullanmak git commit --amend. Son işlemde dosya eklemeniz/kaldırmanız/düzenlemeniz mi gerekiyor? Değişikliklerinizi ekleyin ve commit --amend. Bir dosyada bazı değişiklikler yaptınız ve eklemek yerine onlardan kurtulmak mı istiyorsunuz? Kullanmak git checkout path/to/file – dosya şu anda izlenen sürümüne geri döneceği için bu değişiklikleri kaybedersiniz. Oh, ayrıca kullanabilirsin --patch ile birlikte git checkout değişikliklerin kısmen geri alınması için.

Git’in çok sayıda yardımcı alt komutu vardır. Konsolda proje dosyalarınızdaki mevcut değişiklikleri görmek istiyorsanız, şunu kullanın: git diff. Değişikliklerden bazılarını zaten eklediniz mi ve görünmeyecekler mi? Kullanmak git diff --cached. Bu komutların her ikisi de daha hedefli genel bakış için dosya adlarını kabul eder. Git’in yapabileceği çok fazla karmaşıklık var ve en büyük dağıtılmış yazılım geliştirme çabaları için uygun bir araç. Aslında istemiyorsanız, süslü özelliklerin hiçbirini kullanmanıza da gerek yok.

Sonraki Adım: Yükle

Gördüğünüz gibi, çevrimiçi bir havuza yüklemeyi veya başkalarıyla çalışmayı ele almadım; bunlar oldukça önemli uyarıları olan konulardır. Tek bir ekosisteme bağlı kalmamanız için GitHub’ın yanı sıra GitLab’ı da ele almak istiyorum. Dalları da kapsamadım – tipik bir PCB projesi buna ihtiyaç duymaz, ancak bunun hakkında gelecekteki bir taksitte konuşabiliriz. Yine de, bunu ilerledikçe öğrenebilirsiniz. Artık basit projeler için Git’i kullanmak için gerekli donanıma sahipsiniz!


Kaynak : https://hackaday.com/2022/09/12/git-intro-for-hardware-hackers/

Yorum yapın