Które katalogi nie wymagają przeglądania
Katalog wyników i katalog usług SafeSort zawsze wykluczone — a symboliczne linki nie są w ogóle śledzone.
Skaner SafeSort pomija nie tylko nieistotne pliki, ale także całe katalogi — z dwóch różnych powodów. Pierwszy: niektóre katalogi z góry nie należą do plików użytkownika — na przykład, .git lub .venv.
Druga, bardziej subtelna: własny katalog efektów, Sorted/,
oraz katalog usług samego SafeSort, .safesort/powinno być
wykluczony zawsze — inaczej powtórka już by się zaczęła sortować
Posortowane pliki i niestandardowe dzienniki aktywności.
def excluded_names(self) -> frozenset[str]:
return frozenset({*self.exclude, self.destination, STATE_DIRNAME})
self.exclude jest lista, którą użytkownik może zmienić w pliku ustawień, co omówimy później. Katalog wyników (self.destination, domyślnie Sorted) oraz katalog usług .safesort są dodawane do wyjątków dynamicznie, przy każdym wywołaniu — nie można ich przypadkowo usunąć z listy wyjątków poprzez ustawienia.Odsyłacze symboliczne: świadomie pomijane
Symboliczne łącze — plik lub katalog, który w rzeczywistości wskazuje na inne miejsce w systemie plików. SafeSort nie podąża w ogóle za symbolicznymi łączami, ani do plików, ani katalogów:
| Dlaczego odnośniki są pomijane | Co by się stało inaczej |
|---|---|
| Link może wskazywać poza zeskanowany katalog | SafeSort mógł przenieść plik, który nie należy do wybranego katalogu |
| Referencja katalogowa może tworzyć pętlę indeksowania | Rekurencyjne skanowanie mogłoby nigdy się nie zakończyć |
| Zachowanie związane z linkami symfonicznymi nie zawsze jest oczywiste nawet dla doświadczonych użytkowników | Pierwsza wersja programu wybiera przewidywalne zachowanie zamiast bardziej złożonych |
To rozwiązanie łatwo sprawdzić: skaner używa entry.is_symlink()
przed jakimkolwiek innym sprawdzeniem i, jeśli to symboliczne połączenie, prowadzi od razu do
Do kolejnego elementu katalogowego — ten łańcuch znaków już został napotkany w
_scan_dir() na poprzedniej stronie.