标签: patch

你如何获得差异中包含的文件列表?

我有一个包含输出的补丁文件git diff.我想得到根据补丁文件添加或修改的所有文件的摘要.我可以使用什么命令来实现这一目标?

diff patch

4
推荐指数
1
解决办法
3323
查看次数

为什么这个补丁应用了1的模糊,并且模糊失败为0?

$ vim patch
Index: toPatch
===================================================================
--- toPatch
+++ toPatch
@@ -2,4 +2,4 @@
  */
-final public class XMLWriter {
+public class XMLWriter {

$ vim toPatch
 */
final public class XMLWriter {

  public static float CURRENT_VERSION=2.2f;
    $ patch -p0 -ui patch
patching file toPatch
Hunk #1 succeeded at 1 with fuzz 2 (offset -1 lines).
Run Code Online (Sandbox Code Playgroud)

为什么模糊和线偏移?这是一个尝试理解差异和补丁的演示案例,因为工具有时/通常看起来不像预期的那样工作.

diff patch

4
推荐指数
2
解决办法
1万
查看次数

如何防止Mercurial补丁被拉?

到目前为止,我还没有找到一个明确的答案,尽管答案可能是"改变你的工作流程".

我刚刚开始玩Mercurial的补丁队列,我可以看到它的一些重要力量.这看起来非常棒.在我的测试中,我发现如果你有一个补丁队列repo1,并且你从中拉出来repo2,你可以做一些坏事.例如:

  1. 创建repos 1并克隆它.
  2. 启用队列 repo1
  3. 做一些提交和一些补丁 repo1
  4. 将更改拉到 repo2
  5. repo1取消应用(弹出?)所有补丁
  6. 将更改拉到 repo2

现在你会看到两个不同的分支 - 从某个角度看是有道理的.然而,由于我的补丁不是repo1历史的一部分(至少在它们被应用之前),似乎应该有办法告诉mercurial我的补丁是禁止的,并且只提供"官方历史".

有没有办法做到这一点?

version-control mercurial patch dvcs mercurial-queue

4
推荐指数
1
解决办法
201
查看次数

谁得到手工编辑补丁文件的功劳?

关于编辑GitHub拉取请求的答案的后续问题询问是否在应用之前直接编辑补丁文件会导致对原作者的工作表示赞赏.由于它不是原始问题的真正部分,我在这里要求它作为一个新问题.

git diff patch github pull-request

4
推荐指数
1
解决办法
479
查看次数

git apply:错误尾随空格

最近,我一直在玩git.我正在尝试模拟将补丁应用到我的主分支,这个补丁理解了一个提交,我在java操作中添加了一些注释.我使用git生成了补丁format-patch.然后我切换到我的主分支来应用补丁.执行git apply命令时发生以下错误:

path/to/my/patch/file: line x
path/to/my/patch/file: line x+1
path/to/my/patch/file: line x+2
path/to/my/patch/file: line x+3
Run Code Online (Sandbox Code Playgroud)

我注意到,我也试过以下参数:--ignore-space,ignore-whitespace,

git patch

4
推荐指数
1
解决办法
1万
查看次数

如何在Gradle中应用补丁文件?

我有一个Gradle构建脚本,可以成功构建我的项目并编译我需要的所有工件。

但是,在某些情况下,我想让其他开发人员可以选择修补某些文件。例如,在其中一个档案中,有一个xml文件,其中包含有关数据库挂钩的信息-一些开发人员使用其他版本(甚至引擎),并且在使用生成输出之前需要对其进行更改。

我不想让他们更改可能会错误提交的版本控制文件,而是让他们选择拥有构建脚本适用的本地单个补丁文件。

在旧的蚂蚁脚本中,我们做了这样的事情

<target name="appcontext-patch" if="applicationContext.patch.file">
    <patch patchfile="${applicationContext.patch.file}" originalfile="${dist.dir}/applicationContext.xml"/>
</target>
Run Code Online (Sandbox Code Playgroud)

但是我不知道如何在Gradle中做到这一点。是否有比尝试直接将其转换为to更好的(即更惯用的)方法ant.patch

一些上下文
这是文件首先如何在存档中结束的方式:

into('META-INF') {
    from 'deployment', {
        include 'applicationContext.xml'
        rename { fn ->  "jboss-spring.xml" }
    }
}
Run Code Online (Sandbox Code Playgroud)

这将是fantabulous如果我可以做这样的事情

into('META-INF') {
    from 'deployment', {
        include 'applicationContext.xml'
        rename { fn -> "jboss-spring.xml' }
        patch 'local/applicationContext.xml.patch'
    }
}
Run Code Online (Sandbox Code Playgroud)

并在将文件放入存档之前应用补丁文件。我不介意编写一些代码来实现这一目标,但是我对Gradle还是很陌生,我也不知道从哪里开始。

patch gradle

4
推荐指数
1
解决办法
2761
查看次数

打补丁时出现IDA“无效操作数”错误

我正在尝试使用“组装”选项修补 IDA 中的二进制文件,每次我输入带有一些算术运算的指令来计算偏移量时,我都会收到一个Invalid Operand错误。例如:

mov [bp-4], bx       
Run Code Online (Sandbox Code Playgroud)

返回Invalid Operand,而

mov ax, bx
Run Code Online (Sandbox Code Playgroud)

作品。

我尝试使用指令的格式(例如 include word ptr、 use4h等),但似乎没有任何效果。有没有办法解决这个错误,或者输入字节码来修补唯一的选项?

x86 assembly patch ida disassembly

4
推荐指数
1
解决办法
3851
查看次数

没有 /a /b 的 Git 差异补丁?

我有一个本地存储库,我使用以下命令创建了一个 patch.txt(从一次提交到最后一次提交):

git diff commitid1 commitid2 > patch.txt
Run Code Online (Sandbox Code Playgroud)

但是如果我查看这个 patch.txt,我会看到 2 个目录 /a 和 /b。并且所有文件总是指向 2 个不同的目录(/a 和 /b)?怎么来的?我只有一个本地存储库

我如何创建一个补丁,以便只从一个目录中创建没有 /a 和 /b 的补丁?

谢谢!

git diff patch

4
推荐指数
1
解决办法
1368
查看次数

Python-为具有上下文管理器的类方法创建模拟测试

我正在尝试为具有上下文管理器和许多调用的类函数的方法编写单元测试。我很难理解如何正确模拟该函数,以便可以测试返回值。我要模拟的类是db。正如您在下面看到的那样,我正在使用补丁程序,但是我不知道如何获取它以返回正确的方法调用。我正在得到一个通用的模拟函数,而不是我期望的返回值。

db_class.py

import db

class Foo():
    def __init__(self):
        pass
    def method(self):
        with db.a() as a:
            b = a.b
            return b.fetch()
Run Code Online (Sandbox Code Playgroud)

unit_db.py

 from mock import Mock, patch, MagicMock
 from db_class import Foo

 @patch('db_class.db')
 def test(db_mock):
     expected_result = [5,10]
     db_mock.return_value = Mock(__enter__ = db_mock,
                                 __exit___ = Mock(),
                                 b = Mock(fetch=expected_result))

     foo = Foo()
     result = foo.method()
     assert result == expected_result
Run Code Online (Sandbox Code Playgroud)

python unit-testing patch mocking with-statement

4
推荐指数
1
解决办法
1153
查看次数

补丁:以非交互模式运行

我想自动测试一组仍然完全适用于(更新的)代码库的补丁。为此,我打算跑

patch -p 1 < path/to/patch0.patch
Run Code Online (Sandbox Code Playgroud)

对于所有补丁patch*.patch,检查此命令的返回码,并将其存储在某处。不幸的是,patch在某些情况下似乎可以交互工作。需要交互的典型输出是

can't find file to patch at input line 44
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|Index: foo/docs/faq.html
|===================================================================
|--- foo.orig/docs/faq.html
|+++ foo/docs/faq.html
--------------------------
File to patch: 
Run Code Online (Sandbox Code Playgroud)

有没有办法patch非交互式运行?(也许patch不是这里任务的正确工具。)

unix linux patch

4
推荐指数
1
解决办法
1382
查看次数