X'in hangi sürümü Y özelliğini tanıttı?


10

Benim günlük iş büyük bir bölümü aynı yazılımın gibi farklı sürümleri ile makinelerde kullanılmak üzere yazılım geliştiriyor bash, findve grep. Örneğin kodu basitleştirmek için yararlı olacak bir özellikle karşılaştığınızda, bu özelliğin en eski yüklü araçlarda mevcut olup olmadığını bilmek önemlidir. Kritik şeyler için, bu özelliğin yeni olup olmadığını veya yüklü en eski araçlarda yıllardır var olup olmadığını bilmek de yararlı olacaktır.

Bunu Linux araçları, özellikle GNU Core Utils için yetkili olarak cevaplamanın hızlı yolları nelerdir ? Doğruluğu azaltmak için bazı olasılıklar:

  • Farklı sürümleri çalıştırarak ikili ikili arama (sic) elbette nihai cevaptır, ancak çok zaman alıcıdır. Eski kurulumlar genellikle güvenlik nedeniyle kullanılamaz.
  • Kodu okumak neredeyse iyidir, ancak özellik belirsiz bir şekilde adlandırılırsa, ad doğrudan değişken / işlev / nesne adlarına karşılık gelmezse veya etkinleştirilmeden önce uygulanırsa, zaman alıcı olabilir.
  • Değişiklik günlükleri , varsa, genellikle özellik değişikliklerini yazılım sürümlerine bağlar.
  • İşlem günlükleri ipuçları sağlayabilir, ancak hangi sürüme dahil edileceklerini bilmezler.
  • man sayfaları nadiren tarihlerden bahseder.
  • Aynı şey Google çalışanları için de geçerlidir ve yetkili olmayan tüm kaynakları hariç tutmakta zorlanırsınız .

Belki de bu sorunun ardındaki neden (leri) üzerinde durulabilir misiniz?
Faheem Mitha

Yazılımı bu farklı platformlara taşımak zorunda kalırsanız, bir yerde "en eski" kurulumunuzun olması gerektiğini unutmayın. Yani oldukça hızlı ve yetkili bir cevap bu platformda denemek olacaktır. İdeal olarak tüm platformlarda (bir senaryo olarak bir test senaryosu yazdıysanız, bunu tüm taşıma platformlarınıza iletebilir ve bir dizi evet / hayır yanıtı alabilirsiniz).
roaima

Yanıtlar:


7

Genellikle bir değişiklik günlüğü vardır. Aslında, bu (veya değişikliklerin diğer "önemli bildirimleri") GPL tarafından istenmektedir! (En azından etkili bir şekilde birden fazla katkıda bulunanlar için - bkz. GPLv2 bölüm 2a.)

GNU coreutils paketi için - ve doğrudan GNU projesinden hemen hemen her şey için - bu dosya kesinlikle bakılacak ilk yerdir ve sorunuzun% 95'ine cevap vermelidir.


Coreutils değişiklik günlüğüne bir referansınız var mı?
Bulabildiğim

2
GNU Coreutils ChangeLog 2007'den beri güncellenmemiştir. Cvs.savannah.gnu.org/viewvc/coreutils/… Git günlüklerine bakmanız gerekiyor.
Mikel

2
Git günlüklerinden otomatik olarak oluşturulabilir. Orada bir var ChangeLog.bz2içinde /usr/share/doc/coreutils-8.10benim Fedora sistemde ve üstteki giriş arasındadır 2011-02-04. Bunun bir RH çatalı olması da mümkün - bugün daha sonra kontrol edeceğim.
mattdm

@mattdm: Ubuntu'da /usr/share/doc/coreutils/changelog.gz var - Teşekkürler! Ne yazık ki, sadece ilgili araçların bazıları için çok yeni olan 2008'e kadar gidiyor. Ama sanırım sonuncusu nerede bitiyor.
l0b0

3
İşte kanıtı: git.savannah.gnu.org/cgit/coreutils.git/tree/HACKING Kaydırma hattına 131 için
Shinnok

4

Neden Y özelliğini aramak için X'e kaynak kontrolünü kullanmıyorsunuz? Kaynak repo, belirli bir özelliğin ne zaman tanıtıldığını belirlemenin en iyi yoludur.

Coreutils için http://git.savannah.gnu.org/cgit/coreutils.git adresine gidebilir ve günlük mesajlarında Y ile ilgili anahtar kelimeleri veya Y'ye ait olduğunu belirlediğiniz belirli kod satırlarını arayabilirsiniz. web arayüzü doğrudan veya daha iyisi, klon sizin istasyona kaynak repo ve kullanarak arama git-bisect , git-suçu ve --grep budala-log .

Sonra belirli bir taahhüde en yakın etiketi bulmak için git- define komutunu kullanın. Etiketler çoğunlukla sürüm numaraları için kullanılır, bu nedenle size taahhüdü tanıtan sürümü verecektir.

X ve kaynak kontrolüne bağlı olarak yukarıdaki yöntemi uyarlayabilirsiniz.


Hangi komutun / satırın yazılımın hangi sürümüne girdiğini nasıl belirlersiniz? Ayrıca, Savannah arama kötü bozuldu - Açıkçası aynı günlük mesajlarında olan dizeler için sonuç yok.
l0b0

Kullanım git-tarif etiketi öğrenmek için belirli bir commmit en yakın olanı. Etiketler çoğunlukla sürüm numaraları için kullanılır. Savannah'ın kırılmasına gelince, bu konuda fazla bir şey yapamazsınız. Git, deponuzu kutunuza kopyalar ve gönderide açıkladığım git komutlarını kullanarak yolunuza devam eder.
Shinnok

1

Açık Debian ve bu şekilde platformlar Debian'daki türetilmiş Ubuntu :

sudo apt-get changelog coreutils > changelog.txt 

GNU Core Utilities'in changelog'unu sürüme geri döndürür 4.5.1-1.

Diğer platformlarda da benzer çözümlerin olup olmadığından emin değilim.


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.