我对一个开源项目做了一些更改,没有花时间创建适当的补丁文件.
现在,项目的维护者发布了一个新版本,在新的和编辑过的文件中,有一堆重命名的文件.
什么是将我的更改应用到新版本的最佳方式?
我是diff/patch使用的新手,如果我能用git完成它,那就更好了.
我试过了
git diff 13.1_dev sale_edit > patch.diff
Run Code Online (Sandbox Code Playgroud)
然后我尝试git apply patch.diff在另一个分支,但我得到补丁不适用.如何从差异中创建补丁文件,我可以使用git apply?
收到的错误:
$ git apply --ignore-space-change --ignore-whitespace diff.diff
diff.diff:9: trailing whitespace.
diff.diff:10: trailing whitespace.
function set_change_sale_date()
diff.diff:12: space before tab in indent.
$this->sale_lib->set_change_sale_date($this->input->post('change_sale_date'));
diff.diff:14: trailing whitespace.
diff.diff:15: trailing whitespace.
function set_change_sale_date_enable()
warning: application/controllers/sales.php has type 100755, expected 100644
error: patch failed: application/controllers/sales.php:520
error: application/controllers/sales.php: patch does not apply
warning: application/language/english/sales_lang.php has type 100755, expected 100644
error: patch failed: application/language/english/sales_lang.php:134
error: application/language/english/sales_lang.php: patch does not apply
warning: application/libraries/Sale_lib.php has …Run Code Online (Sandbox Code Playgroud) 我有一个文件和一个补丁.我想在视觉上应用补丁,看看补丁提出的更改如何在上下文中查看,进行一些更正,并保存生成的文件.
什么工具可以做到这一点?
视觉差异工具(即meld,diffuse,diffmerge)都不能满足我的要求:它们不能使用补丁,它们只是合并整个文件.
好吧,我已经尝试了所有可以在stackoverflow上找到的答案,但显然似乎没有人能够解决我的问题.我想将SVN制作的补丁应用到git存储库.显然,最简单的方法是使用'git apply',但这似乎不起作用.
$ git apply --ignore-space-change --ignore-whitespace < xxx_parser.patch
<stdin>:10: trailing whitespace.
FORCE_LA_CHECK = false; stdin:23: trailing whitespace.
<stdin>:79: trailing whitespace
.
.
.
.
error: pmd/grammar/JspParser.jjt: No such file or directory
error: patch failed: pmd/pom.xml:251
error: pmd/pom.xml: patch does not apply
Run Code Online (Sandbox Code Playgroud)
这是xxx_parser.patch的内容:
$ head xxx_parser.patch Index: etc/grammar/JspParser.jjt
--- etc/grammar/JspParser.jjt (revision 7704)
+++ etc/grammar/JspParser.jjt (working copy)
Run Code Online (Sandbox Code Playgroud)
现在为什么它抱怨它找不到文件pmd/grammar/JspParser.jjt?
补丁中的路径指向正确的目录.
如果您介于版本1和版本2之间,那么您如何维护软件?
从我的观点来看,术语补丁,修补程序,维护版本,Service Pack等都是模糊的,根据您的联系人而定义不同.
您认为发布之间的增量维护工作是什么?
def f1():
return 10, True
def f2():
num, stat = f1()
return 2*num, stat
Run Code Online (Sandbox Code Playgroud)
我如何使用python的模拟库来修补f1()和返回自定义结果,以便我可以测试f2()?
编辑: 我的测试有问题吗?这似乎不起作用,所有测试都失败了AssertionError
from foo.bar import f2
from mock import patch
class MyTest(TestCase):
def test_f2_1(self):
with patch('project.module.f1') as some_func:
some_func.return_value = (20, False)
num, stat = f2()
self.assertEqual((num, stat), (40, False))
@patch('project.module.f1')
def test_f2_2(self, some_func):
some_func.return_value = (20, False)
num, stat = f2()
self.assertEqual((num, stat), (40, False))
Run Code Online (Sandbox Code Playgroud) 我试图找到需要在Linux内核中修复的错误,但我不知道在哪里看.我在Youtube上观看了Greg Kroah-Hartman的视频"如何提交你的第一个Linux内核补丁",但他并没有真正提到在哪里找到需要修复的漏洞.
在视频中,他简要提到了邮件列表并在内核代码中查看了TODO.有谁知道我可以加入邮件列表?另外,我找到了内核Bugzilla,但根据Kernel.org,只列出了2.6的bug.我实际上注册了,但是我只是发现了一个我感兴趣的错误并尝试修复它,如果它还没有在最新的内核上修复?它是否已被分配给某人是否重要?
如果我能找到一个列出所有现有错误列表的站点,那么我会找到一个低优先级和低严重性的东西.我真的在寻找一个相对容易修复的bug,这样我就可以学习绳索并按照自己的方式工作.
任何建议,输入,阅读网站等任何人都将不胜感激.感谢您阅读/回答.=)
我有一个补丁文件(统一差异),像输出svn diff,git diff或diff -u ....我想回顾一下,但统一的差异格式 - 特别是有很多文件和变化 - 对我来说很难.
如何从补丁文件中获取格式良好的差异视图?我没有文件本身,只有diff,所以我不能使用所有常规的diff工具.
到目前为止,我最好的两个策略是:
#!diff-formatted部分中的Trac wiki中,然后单击"预览" - 这将创建一个非常棒的差异视图:{{{
#!diff
<unified diff here>
}}}
有桌面工具可以做到这一点吗?有没有办法说服kdiff3/diffmerge/p4merge /等可视化补丁文件?复制Trac可视化的东西也会很棒.
编辑:Windows支持的奖励积分,最好是安装程序或无痛安装.
有时,无论出于何种原因,我都必须生成错误方向的补丁文件(在Linux下).我知道我可以通过-R在应用它时使用开关来解决这个问题patch,但是如果有一种永久性地反转补丁文件的方法会很好.是否有可以执行此操作的实用程序,或者例如可以保证有效的正则表达式?
UPDATE
Lie Ryan 提出了一个巧妙的方法.但是,它需要访问原始源文件.所以我想我应该更新我的问题,说明我更多的是在一种方法实现这一点,只给出补丁文件本身.
我目前正在尝试对(github)存储库的PR进行代码样式检查,并且我希望向提交者提供补丁,以便他们可以轻松地修复代码样式.为此,我正在拉下他们的PR,在它上面运行我们的解密脚本以修复任何样式错误,并且想要创建一个可以轻松应用的.patch文件.但是,它一直打破一些文件.
我这样做(git版本1.7.10.4 with core.autocrlf=input,core.filemode=false):
$ git checkout pr-branch
$ git log -1 (shows: commit dbb8d3f)
$ git status (nothing to commit, working directory clean)
$ <run the code styler script, which modifies some files>
$ git diff > ../style.patch (so the patch file lands outside the repo)
$ git reset --hard HEAD (to simulate the situation at the submitter's end)
$ git log -1 (shows: commit dbb8d3f)
$ git status (nothing to commit, working directory clean, so …Run Code Online (Sandbox Code Playgroud) patch ×10
diff ×4
git ×4
linux ×3
formatting ×1
hotfix ×1
kernel ×1
maintenance ×1
mocking ×1
python ×1
servicepacks ×1
svn ×1
testing ×1
unit-testing ×1