Политика «Все или ничего» для исправления

#diff #patch

#разница #исправление

Вопрос:

У меня есть файл исправления, описывающий изменения в нескольких файлах для применения к содержимому каталога.

Я хотел бы применить ее только в том случае, если все файлы могут быть успешно исправлены. Если какой-либо файл не может быть исправлен, я хотел бы прервать процесс, ничего не изменяя.

Я мог бы сначала выполнить пробный запуск, проанализировать выходные данные и посмотреть, не сработает ли какой-либо фрагмент, прежде чем применять его по-настоящему, но должен быть лучший способ сделать это.

Редактировать ~ У меня есть серия папок с html / css, по одной для каждого из наших пользователей, которые они могут изменять. Неизмененные папки являются символическими ссылками. Вносимые изменения обычно очень малы, поэтому, когда мы выпускаем обновление для кода по умолчанию, не должно возникнуть проблем с применением исправления для обновления их большую часть времени.

Ответ №1:

Я бы рекомендовал выполнить пробный запуск. Вам не нужно анализировать выходные данные, просто перенаправьте их в /dev/null. Код выхода сообщает вам, сработало это или нет.

Со страницы руководства для patch , в разделе «Диагностика»:

статус завершения исправления равен 0, если все исправления применены успешно, 1, если некоторые исправления не могут быть применены, и 2, если есть более серьезные проблемы. При применении набора исправлений в цикле вам следует проверять этот статус завершения, чтобы не применять более поздний патч к частично исправленному файлу.

Ответ №2:

Используйте контроль версий.

Таким образом, вы можете отменить, если исправление было применено не полностью.

Комментарии:

1. Думаю, я был недостаточно конкретен. Это не сработало бы для моей среды. Я отредактирую вопрос и предоставлю более подробную информацию.

2. @fonso — Вы вообще не были конкретны и до сих пор не конкретизируете. Почему это не будет работать в вашей среде? Что именно вы делаете?

3. Извините, я нажал ввод для новой строки и случайно опубликовал комментарий.

4. @fonso — если у вас есть информация, которую нужно добавить к вопросу, добавьте ее в вопрос, а не в комментарии к ответу.

5. @fonso — даже с вашей правкой я не понимаю, почему контроль версий не будет работать.