разница Subversion, включая новые файлы
Вопрос
У меня есть некоторые локальные изменения в проекте с открытым исходным кодом, который использует 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 вы используете.