DIV Subversion, включая новые файлы - PullRequest
18 голосов
/ 02 октября 2008

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

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

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


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

Ответы [ 4 ]

28 голосов
/ 13 февраля 2010

Я испытал подобное поведение с Позсаром. И его ответ работал для меня лучше, чем обычный 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
12 голосов
/ 27 июня 2009

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

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

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

6 голосов
/ 02 октября 2008

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

0 голосов
/ 02 октября 2008

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

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

...