Прежде всего, извините за длинный текст, но я стараюсь быть как можно более подробным.
Я занимаюсь разработкой проекта с открытым исходным кодом (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
Это одна из папокЯ добавил во время разработки, что доказывает, что патч не создает эти новые папки.