Я добавляю этот ответ на случай, если кто-нибудь попытается обновить уже извлеченный репозиторий Subversion, чтобы синхронизировать даты локального файла с датами репо , что я хотел сделать, чтобы я мог сделать FS временная метка сравнения.
Я сделал этот oneliner, чтобы сделать трюк (но перед использованием его прочитайте строку ниже):
svn info --show-item last-changed-date -R | xargs -I{} -P1000 -n1 sh -c 'x="{}"; set -x; exec touch -d "${x%% *}" "${x#* }"'
ПРИМЕЧАНИЕ: -P1000
указывает, что xargs
должен запускать 1000 одновременных копий sh
и touch
для фактического обновления , В зависимости от загрузки системы может быть целесообразно уменьшить это. На крошечном процессоре Intel NUC 1000 на базе i3 процессы оказались действительно безупречными, при этом использовалось 80-95% ЦП (обычно 100% означает, что ЦП перегружен). Если сомневаетесь, откройте, например, htop
и протестируйте с другими значениями - но запустите его только на несколько секунд, потому что он должен запускаться каждый раз с самого начала.
Для небольшого репозитория SVN ~ 3 ГБ на жестком диске USB это заняло около 5 минут.
set +x
включает подробное выполнение, которое я делаю непосредственно перед выполнением touch
, чтобы вы могли наблюдать его выполнение. Если вы хотите не многословное выполнение, удалите эту команду.