首先请原谅长文本,但我想尽可能详细。创建包含新目录的SVN补丁
我正在开发一个开源项目(DSpace)。我没有提交SVN回购的权限,所以我查看了源代码并使用git来管理我的版本。
在我的开发过程中,我添加了几个目录和二进制文件到我的项目。
现在是制作SVN补丁文件的时候了,所以我可以回馈社区! Netbeans通过团队 - >创建补丁选项为我执行此操作。到目前为止好...
然而,当我在另一台机器上再次检查了来源和使用补丁命令:
# 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参数补丁命令(尽管如此我已经尝试了-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
这是我在开发过程中增加了一个文件夹,这证明补丁不会创建这些新文件夹。
你能表现出一些或全部patch.diff的纯颠覆CLI的情况下?我不知道NetBeans如何生成修补程序,但是如果您在文件系统中添加文件或目录,并且不告诉Subversion它应该添加,它将不会显示在由CLI客户端生成的修补程序中。 – SteveMc
我试过通过svn add * - force在我修改的目录中添加所有文件,然后我做了svn diff> patch.diff命令。不幸的是,我不能在这里发布差异文件,因为它是一项学术工作,只能在审核后发布...... :( –
我认为您可能需要在结帐时手动创建目录和文件 - 进一步考虑这一点,我不要以为Subversion支持创建新的目录(也不是文件,我不认为)在修补程序 - svn比较只列出文本差异。 – SteveMc