Forum: Ders Arası RSS
Makefile build sayacı ve sürüm numarası
zafer #1
Üye Tem 2009 tarihinden beri · 700 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: Makefile build sayacı ve sürüm numarası
Kullandığım IDE'lerin çoğunda bir build sayacı bulunuyor. Kaç defa build yapıldığı bilgisini saklıyor. Böyle bir şeyi makefile dosyasının içine yerleştirmek mümkün mü?

Ayrıca sürüm numarası oluşturma konusunda fikirler nelerdir?
https://github.com/zafer06 - depo
acehreli (Moderatör) #2
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Build numaraları doğrudan kullanılan sürüm denetimi programına bağlı oluyor. Örneğin kitabın pdf kopyasının baş sayfasına yerleştirdiğim "sürüm: r447, 2012-04-15" bilgisi, ddili.org'un Google code'daki son svn sürümü.

Oradaki sürüm numarasını make sırasında otomatik olarak şöyle elde ediyorum:

echo r`svn info ders/d/pdf_indir.d ders/d/tesekkur.d | grep "Last Changed Rev" | awk '{print $4}' | sort -n | tail -n 1`

Yukarıda iki dosya gösterdim ama aslında bütün dosyalar kullanılıyor. Ayrıca o yalnızca sürüm numarası; ondan virgülle ayrılan tarih de benzer biçimde alınıyor ve aslında yukarıdaki satırın son tarafı:

\, `svn info ders/d/pdf_indir.d ders/d/tesekkur.d | grep 'Last Changed Date' | awk '{print $4}' | sort -n | tail -n 1`

Bütün satırın en sonunda da bütün çıktı şu dosyaya yönlendiriliyor:

> ders/d/pdf_surum.txt

Belki fazla ve gereksiz bilgi oldu ama sonuçta sen de git'in komut satırı araçlarını kullanarak build numarasını elde edebilir ve grep ve awk gibi başka programlarla süzerek istediğin bilgiyi çekebilirsin.

Tabii bir D programcısı olarak bütün işlemi yazdığın bir programa da yaptırabilirsin. ;)

Kendi programının sürüm numarası ise sana kalmış bir konu. Belirli bir anda 0.1 vs. diye adlandırabilirsin. git'i iyi bilmediğim için başka arkadaşların yanıtlamalarını bekliyorum.

Ali

Not: Böyle gösterince çok karmaşık ama yukarıdaki iki komut şurada 120 ile 124 satırları arasında:

  http://code.google.com/p/ddili/source/browse/trunk/src/Mak…
zafer #3
Üye Tem 2009 tarihinden beri · 700 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
acehreli:
Build numaraları doğrudan kullanılan sürüm denetimi programına bağlı oluyor.

Bunu bilmiyordum. Doğrusu genelde kullandığım IDE üzerinden her build işlemi sonucu artan bir sayaç sistemi olduğu için ben build numarası olarak hep onu kullanıyordum.

Belki fazla ve gereksiz bilgi oldu ama sonuçta sen de git'in komut satırı araçlarını kullanarak build numarasını elde edebilir ve grep ve awk gibi başka programlarla süzerek istediğin bilgiyi çekebilirsin.

Hayır, aksine çok faydalı bilgiler, konuyu kavramak adına gerçek bir projeden örnek sunman çok iyi oldu. Git konusunu araştıracağım, büyük ihtmal bu tür yapı ondada mevcuttur.

Tabii bir D programcısı olarak bütün işlemi yazdığın bir programa da yaptırabilirsin. ;)

Olayı tam olarak anladıktan sonra neden olmasın! Madem D konusunda bir becerimiz var kullanmak gerek.  ;-)

Kendi programının sürüm numarası ise sana kalmış bir konu.

Ben şu sıralar uğraştığım ve farklı kaynaklardan sipariş bilgisi alıp bizim sisteme aktaran bir aktarım sistemi için şöyle bir sürüm numarası sistemi kullanıyorum.

sürüm 1.5.86.20110418-1530

Burada 1 ve 5 benim kendi insiyatifimde olan sayılar, 86 değeri build sayısını gösterirken en son hanede zaman damgası olarak projenin build edildiği tarih ve saati gösteriyor.

Ancak 1 ve 5  sayılarını arttırırken çok tutarlı olamıyorum  :-D , aslında onlarıda bir mekanizmaya bağlayabilsem çok daha güzel olacak, henüz bir şey bulamadım.
https://github.com/zafer06 - depo
acehreli (Moderatör) #4
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
zafer:
IDE üzerinden her build işlemi sonucu artan bir sayaç

Ben de onu bilmiyordum. :)

Git konusunu araştıracağım, büyük ihtmal bu tür yapı ondada mevcuttur.

Ben de şimdi baktım ve git'te svn'deki gibi sürekli artan bir numara olmadığını öğrendim. O uzun karmaşık numaradan başka bir şey yokmuş.

Onun için de şöyle hızlıca bir çözüm:

git log | head -n 1 | awk '{print $2}'

Onun çıktısı şu andaki çalışma ortamının en son uzun numarasını verir.

Ali
zafer #5
Üye Tem 2009 tarihinden beri · 700 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
acehreli:
Ben de şimdi baktım ve git'te svn'deki gibi sürekli artan bir numara olmadığını öğrendim.

Anlıyorum, zaten bildiğim kadarıyla svn'deki o numara aslında build sayısı değil, gönderiler için oluşturulan bir revizyon numarası şeklinde diye hatırlıyorum.

Diğer taraftan bende "git describe" komutunu buldum. Ancak bu uzun va karışık bir değer veriyor, bunu ayıklamak için script yazanlar olmuş ancak senin yazdığın örneklerdeki gibi büyük kısmı linux için dolayısıyla işime yaramadı. :(

Başka bir çözüm bulacağız artık, önerisi olan?
https://github.com/zafer06 - depo
acehreli (Moderatör) #6
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
zafer:
svn'deki o numara aslında build sayısı değil, gönderiler için oluşturulan bir revizyon numarası

Doğru. Biz yine de o numarayı da iç sürüm numaramız olarak kullanıyoruz. Böylece belirli bir ara sürümün bile svn'nin hangi revizyonuna karşılık geldiği biliniyor.

Ali
zafer #7
Üye Tem 2009 tarihinden beri · 700 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
acehreli:
Böylece belirli bir ara sürümün bile svn'nin hangi revizyonuna karşılık geldiği biliniyor.

Pratik ve güzel bir fikir, böylece programdaki sürüm numarasından svn'deki ilgili revizyona direk ulaşabiliyorsunuz anladığım kadarıyla, oldukça kullanışlı, tabi svn numaraları git gibi karışık olmadığı için svn ortamı için güzel bir uygulama olmuş bence.
https://github.com/zafer06 - depo
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Forum: Ders Arası RSS
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-11-22, 05:05:32 (UTC -08:00)