2008-10-01 2 views
18

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

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

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


$ svn st 
    A  tests/foo.zip 
$ svn diff 
$ 
+4

Я действительно заинтересован в ответе на этот вопрос, когда файл * не * двоичным. – Glyph 2010-06-01 16:42:49

+0

@ Глиф: посмотрите здесь: http://stackoverflow.com/q/4248768/427532 – 2012-02-16 17:13:16

ответ

6

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

0

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

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

12

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

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

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

26

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

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

patch -p0 --binary -i mybinarydiff.diff 
Смежные вопросы