2011-08-25 73 views
4

首先请原谅长文本,但我想尽可能详细。创建包含新目录的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 

这是我在开发过程中增加了一个文件夹,这证明补丁不会创建这些新文件夹。

+0

你能表现出一些或全部patch.diff的纯颠覆CLI的情况下?我不知道NetBeans如何生成修补程序,但是如果您在文件系统中添加文件或目录,并且不告诉Subversion它应该添加,它将不会显示在由CLI客户端生成的修补程序中。 – SteveMc

+0

我试过通过svn add * - force在我修改的目录中添加所有文件,然后我做了svn diff> patch.diff命令。不幸的是,我不能在这里发布差异文件,因为它是一项学术工作,只能在审核后发布...... :( –

+0

我认为您可能需要在结帐时手动创建目录和文件 - 进一步考虑这一点,我不要以为Subversion支持创建新的目录(也不是文件,我不认为)在修补程序 - svn比较只列出文本差异。 – SteveMc

回答

0

在生成补丁,其中有包括添加新的文件/目录,你必须添加--git选项svn diff命令