Вопрос

У меня есть некоторые локальные изменения в проекте с открытым исходным кодом, который использует Subversion в качестве системы управления версиями.(У меня нет доступа к фиксации в исходном репозитории проекта.)

Мое изменение добавляет файл, но этот файл не включается в выходные данные «svn diff».(Возможно, стоит отметить, что новый файл представляет собой двоичный файл, а не простой текст.)

Как я могу сделать пластырь который включает в себя новые файлы?


 $ svn st
   A      tests/foo.zip
 $ svn diff
 $
Это было полезно?

Решение

Боюсь, именно из-за того, что ваш файл является двоичным, он не отображается.Команда Subversion diff выполняет только текстовые различия/исправления (хотя Subversion внутри может эффективно обрабатывать различия в двоичных файлах между версиями).

Другие советы

Я испытал такое же поведение, как и Позсар.И его ответ сработал для меня лучше, чем обычный svn diff --force.Однако, если вы работаете на машине DOS (например.через Cygwin), возможно, вам придется немного изменить его ответ.Следующий diff + патч работал для исправления моих текстовых + двоичных файлов в Cygwin с использованием аргумента --binary:

svn diff --force --diff-cmd /usr/bin/diff -x "-au --binary" OLD-URL NEW-URL > mybinarydiff.diff

patch -p0 --binary -i mybinarydiff.diff

В команде diff есть опция --force, но она создает неверный файл исправления для двоичных файлов на моей машине.Однако использование его с опцией --diff-cmd работает для меня:

svn diff --force --diff-cmd /usr/bin/diff -x -au

Я думаю, что это дает именно то, что вы хотели.

Если вы создаете патч, вы можете использовать старый добрый «diff» с опцией --new-file, которая считает отсутствующий файл пустым.

Обратите внимание, что синтаксис этой опции может варьироваться в зависимости от того, какую версию старого стандарта diff вы используете.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top