Обычно при переключении релиза делают несколько переименований: текущий каталог убирают в сторону, новый ставят на его место. Между этими операциями существует промежуточное состояние.
У mv теперь есть
--exchange:mv -T --exchange release-new release-current
Если оба пути находятся в одной файловой системе и она поддерживает атомарный обмен,
mv меняет их местами одной операцией: release-current становится новым релизом, а прежнее содержимое оказывается в release-new.Причём это не только для каталогов:
mv --exchange config.new config.conf
Поменять их обратно можно той же командой:
mv --exchange config.new config.conf
Для сценариев, где нельзя допустить незаметного перехода к копированию между файловыми системами, можно добавить
--no-copy:mv -T --exchange --no-copy release-new release-current
🔥
mv --exchange — случай, когда обычная Unix-команда даёт удобный интерфейс к атомарной операции файловой системы, что полезно для переключения релизов, деревьев сборки и быстрого отката без цепочки промежуточных переименований.🚪 Linux Ready | #совет
