Ben koşmak barındırılan sürekli entegrasyon şirketi ve biz Linux üzerinde müşterilerimizin kodu çalıştırın. Kodu her çalıştırdığımızda, ayrı bir sanal makinede çalıştırıyoruz. Ortaya çıkan sık karşılaşılan bir sorun, bir müşterinin testlerinin bazen sanal makinede teslim edilen kodlarının dizin sıralaması nedeniyle başarısız olmasıdır.
Daha fazla ayrıntıya gireyim. OSX'te HFS + dosya sistemi, dizinlerin her zaman aynı sırada geçmesini sağlar. OSX kullanan programcılar, makinelerinde çalışırsa, her yerde çalışması gerektiğini varsayar. Ancak Linux'ta genellikle çalışmaz, çünkü linux dosya sistemleri dizinleri dolaşırken sipariş garantisi sunmaz.
Örnek olarak, 2 dosya olduğunu düşünün: a.rb, b.rb. a.rb tanımlar MyObject
ve b.rb kullanır MyObject
. İlk önce a.rb yüklenirse, her şey çalışır. Önce b.rb yüklenirse, tanımsız bir değişkene erişmeye çalışır MyObject
ve başarısız olur.
Ama bundan daha kötüsü, her zaman başarısız olmuyor. Linux'ta dosya sistemi siparişi sipariş edilmediğinden, farklı makinelerde farklı bir sipariş olacaktır. Bu daha kötüdür, çünkü bazen testler geçer, bazen başarısız olurlar. Bu olası en kötü sonuçtur.
Benim sorum, dosya sistemi siparişini tekrarlanabilir hale getirmenin bir yolu var. Bazı bayrak4 ext4'e göre, bu her zaman dizinleri her zaman belirli bir sırada geçeceğini söylüyor? Ya da belki bu garantiye sahip farklı bir dosya sistemi?