FILE=somefile.js; LOG=~/changes.diff; truncate -s0 ${LOG}; for change in $(svn log ${FILE} | awk -F' | ' '/^r[0-9]+/{print $1}'); do svn log -c ${change} >> ${LOG}; printf "\n" >> ${LOG}; svn diff -c ${change} >> ${LOG}; printf "\n\n\n" >> ${LOG}; done
Данная команда выполняет следующие действия:
1. Создает переменные FILE (с именем файла) и LOG (с путем к файлу, куда будут сохраняться изменения).
2. Очищает содержимое файла LOG.
3. Перебирает все изменения (ревизии) файла FILE в SVN.
4. Для каждого изменения:
— Выводит данные об изменении в файл LOG.
— Добавляет пустую строку в файл LOG.
— Выводит разницу (diff) между текущим изменением и предыдущей версией в файл LOG.
— Добавляет несколько пустых строк в файл LOG.
Команда полезна, если вам нужно получить все изменения файла из системы контроля версий SVN и сохранить их в отдельный файл для дальнейшего анализа или проверки.
Альтернативным способом может быть использование программного клиента SVN, который может предоставлять доступ к тем же данным через графический интерфейс.
Аргументы, передаваемые команде:
— FILE: имя файла в SVN, изменения которого нужно получить.
— LOG: путь к файлу, куда будут сохранены изменения.
