Ich leite ein gehostetes Unternehmen für kontinuierliche Integration , und wir führen den Code unserer Kunden unter Linux aus. Jedes Mal, wenn wir den Code ausführen, führen wir ihn in einer separaten virtuellen Maschine aus. Ein häufig auftretendes Problem besteht darin, dass die Tests eines Kunden manchmal aufgrund der Verzeichnisreihenfolge des auf der VM ausgecheckten Codes fehlschlagen.
Lassen Sie mich näher darauf eingehen. Unter OSX stellt das HFS + -Dateisystem sicher, dass Verzeichnisse immer in derselben Reihenfolge durchsucht werden. Programmierer, die OSX verwenden, gehen davon aus, dass es überall funktionieren muss, wenn es auf ihrem Computer funktioniert. Unter Linux funktioniert dies jedoch häufig nicht, da Linux-Dateisysteme beim Durchlaufen von Verzeichnissen keine Bestellgarantien bieten.
Angenommen, es gibt 2 Dateien, a.rb, b.rb. a.rb definiert MyObject
und b.rb verwendet MyObject
. Wenn a.rb zuerst geladen wird, funktioniert alles. Wenn b.rb zuerst geladen wird, versucht es, auf eine undefinierte Variable zuzugreifen MyObject
, und schlägt fehl.
Aber schlimmer als das ist, dass es nicht immer nur scheitert. Da die Dateisystemreihenfolge unter Linux nicht geordnet ist, wird die Reihenfolge auf verschiedenen Computern unterschiedlich sein. Das ist schlimmer, weil manchmal die Tests bestanden werden und manchmal scheitern. Dies ist das schlechteste mögliche Ergebnis.
Meine Frage ist also, gibt es eine Möglichkeit, die Bestellung von Dateisystemen wiederholbar zu machen. Ein Flag für ext4, das besagt, dass Verzeichnisse immer in einer bestimmten Reihenfolge durchlaufen werden? Oder vielleicht ein anderes Dateisystem, das diese Garantie hat?