创建包含新目录的SVN补丁

时间:2011-08-25 20:27:05

标签: svn new-operator patch directory

首先请原谅长篇文章,但我想尽可能详细。

我正在开发一个开源项目(DSpace)。我没有他们的SVN仓库的提交权限,所以我检查了源代码并且一直使用git来管理我的版本。

在开发过程中,我已经为项目添加了几个目录和二进制文件。

现在是制作SVN补丁文件的时候了,所以我可以回馈社区! Netbeans通过团队为我做这件事 - >创建补丁选项。到目前为止一切都很好......

但是,当我在另一台机器上再次检出源并使用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版本中的一堆文件,所以我认为它与patch命令的-pXXX参数无关(尽管如此)我已经尝试了-p10)...我认为只有当我尝试在我创建的目录中修补文件时才会发生这种情况。 我的猜测是patch命令不会创建新目录,因此无法找到正确的路径。

这让我疯了,请有人知道如何解决我的问题吗?

提前致谢!

编辑:

我在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 :(得分:0)

如果要为纯粹的subversion CLI生成必须包含添加新文件/目录的补丁,则必须向--git命令添加svn diff选项