Создание патча SVN, включая новые каталоги - PullRequest
4 голосов
/ 26 августа 2011

Прежде всего, извините за длинный текст, но я стараюсь быть как можно более подробным.

Я занимаюсь разработкой проекта с открытым исходным кодом (DSpace).У меня нет привилегий коммитов для их репозитория SVN, поэтому я проверил источник и использовал git для управления версионированием.

Во время разработки я добавил несколько каталогов и двоичных файлов в свой проект.

Настало время сделать файл патча SVN, чтобы я мог что-то вернуть сообществу!Netbeans делает это для меня с помощью опции Team-> Create patch.Пока все хорошо ...

Однако, когда я снова проверяю источник на другом компьютере и использую команду исправления:

# get current dir
DIR="$( cd "$( dirname "$0" )" && pwd )" 

#check out dspace release
svn co http://scm.dspace.org/svn/repo/dspace/tags/dspace-1.7.2/ -q $DIR/dspace-1.7.2/

#apply patch
cd $DIR/dspace-1.7.2
echo "Now running at "&& pwd
patch --dry-run -N -p0 < $DIR/patches/patch.diff
cd $DIR

Запуск сценария

Когда я запускаю этот скрипт, все идет хорошо, пока патч не попытается изменить файл в одном из моих новых каталогов.В нем говорится следующее:

can't find file to patch at input line 9214
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|Index: dspace-jspui/dspace-jspui-webapp/src/main/webapp/static/js/jQueryUI/jquery-ui.js
|--- dspace-jspui/dspace-jspui-webapp/src/main/webapp/static/js/jQueryUI/jquery-ui.js         Base (BASE)
|+++ dspace-jspui/dspace-jspui-webapp/src/main/webapp/static/js/jQueryUI/jquery-ui.js     Locally Modified (Based On LOCAL)
--------------------------
File to patch:

Прежде чем он остановится, он сможет исправить группу файлов, которые уже были в исходном выпуске dspace, , так что я думаю, что это не связано спараметр -pXXX команды patch (тем не менее, я пробовал до -p10) ... Я думаю, что это происходит только тогда, когда я пытаюсь исправить файл в одном из моих созданных каталогов. Я предполагаю, что команда patch не создает новые каталоги, поэтому не может найти правильные пути.

Это сводит меня с ума, пожалуйста, кто-нибудь знает, как решить мою проблему?

Заранее спасибо!

РЕДАКТИРОВАТЬ:

Я добавил опцию --verbose в команду исправления.Вот результат:

--------------------------
Patching file dspace-jspui/dspace-jspui-webapp/src/main/webapp/static/js/autocompleter/styles.css using Plan A...
Hunk #1 succeeded at 1.
Hmm...  The next patch looks like a unified diff to me...
can't find file to patch at input line 9214
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|Index: dspace-jspui/dspace-jspui-webapp/src/main/webapp/static/js/jQueryUI/jquery-ui.js
|--- dspace-jspui/dspace-jspui-webapp/src/main/webapp/static/js/jQueryUI/jquery-ui.js     Base (BASE)
|+++ dspace-jspui/dspace-jspui-webapp/src/main/webapp/static/js/jQueryUI/jquery-ui.js     Locally Modified (Based On LOCAL)
--------------------------
File to patch: 

После того, как я выйду из процесса исправления, если я сделаю

cd dspace-1.7.2/dspace-jspui/dspace-jspui-webapp/src/main/webapp/static/js/jQueryUI

, я получу:

-bash: cd: dspace-1.7.2/dspace-jspui/dspace-jspui-webapp/src/main/webapp/static/js/jQueryUI: No such file or directory

Это одна из папокЯ добавил во время разработки, что доказывает, что патч не создает эти новые папки.

1 Ответ

0 голосов
/ 08 февраля 2013

В случае создания патчей, которые должны включать добавление новых файлов / каталогов, для чистого CLI Subversion, вы должны добавить опцию --git к svn diff команде

...