标签: patch

Git:如何为合并创建补丁?

当我使用时git format-patch,它似乎不包括合并.如何执行合并,然后将其作为一组补丁通过电子邮件发送给某人?

例如,假设我合并了两个分支并在合并之上执行另一个提交:

git init

echo "initial file" > test.txt
git add test.txt
git commit -m "Commit A"

git checkout -b foo master
echo "foo" > test.txt
git commit -a -m "Commit B"

git checkout -b bar master
echo "bar" > test.txt
git commit -a -m "Commit C"

git merge foo
echo "foobar" > test.txt
git commit -a -m "Commit M"

echo "2nd line" >> test.txt
git commit -a -m "Commit D"
Run Code Online (Sandbox Code Playgroud)

这将创建以下树:

    B
  /   \
A       M …
Run Code Online (Sandbox Code Playgroud)

git merge patch

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

如何阅读.rej文件,即

我在修补我的源代码树时遇到了问题,这不是通常的-p剥离问题.patch能够找到要修补的文件.

具体来说,我的问题是如何读取/解释.rej文件patch创建时几个帅哥失败.patch/ diff我见过的大多数讨论都不包括这个.

diff patch

26
推荐指数
3
解决办法
2万
查看次数


我不"得到"程序如何更新自己.如何更新软件?

假设我创建一个.exe文件,一切都很好.很棒很有效.

说我在软件上开发了一个新功能,我希望它可以用于已经有旧版本的人,如何让软件找到我的新版本,修补它,然后开展业务.

我似乎无法绕过这个问题.

谢谢.

编辑: 我很抱歉这个混乱,但我的意思是一个代码更明智的答案.我的代码中是否有一些特殊内容我应该允许更新?

例如,如果我想添加新功能,如何为已经打包的.exe添加"方法"?:S那让我旋转着.

c# patch upgrade

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

如何在选择性分期期间编辑Git"添加补丁"帅哥/差异/线条?

我有一个源文件,其中添加了2个功能.为了允许采摘樱桃,我想分两个阶段:每个功能一个.到目前为止,在类似的情况下,使用git add -p我很好,提交一个功能,同时将本地文件留在最后阶段.

但是,我现在git add -p遇到了一个问题,即想要包含两个功能的编辑.即使编辑是在单独的行上,s(对于"拆分")不再想要将大块分成更小的部分......

简而言之:我无法通过这种方式分离2个功能的更改.有没有办法手动编辑补丁,例如使用vi,而不实际更改原始文件?

git patch split commit git-add

25
推荐指数
3
解决办法
7726
查看次数

如何在Windows上创建补丁文件?

在Windows上,我有两个源文件,并希望创建一个有差异的补丁,就像这个.但我不确定,这个补丁的格式是什么,以及用什么应用程序来创建它?GNU diff输出与我在上面链接中看到的补丁非常不同.

patch

23
推荐指数
5
解决办法
3万
查看次数

如何使用mock修补模块的内部函数?

"内部函数"是指从定义的同一模块中调用的函数.

我在单元测试中使用模拟库,特别是补丁装饰器.它们是Django单元测试,但这适用于任何python测试.

我有一个具有多个功能的模块,其中许多功能相互调用.例如(虚构代码,忽略decimal.Decimal的缺失):

TAX_LOCATION = 'StateName, United States'

def add_tax(price, user):
    tax = 0
    if TAX_LOCATION == 'StateName, UnitedStates':
        tax = price * .75
    return (tax, price+tax)

def build_cart(...):
    # build a cart object for `user`
    tax, price = add_tax(cart.total, cart.user)
    return cart
Run Code Online (Sandbox Code Playgroud)

这些是更深层调用链的一部分(func1 - > func2 - > build_cart - > add_tax),所有这些都在同一个模块中.

在我的单元测试中,我想禁用税收以获得一致的结果.在我看来,我的两个选项是1)修补TAX_LOCATION(用空字符串,比如说),这样add_tax实际上什么都不做,或者2)修补add_tax只返回(0,价格).

但是,当我尝试修补其中任何一个时,补丁似乎在外部工作(我可以在测试中导入修补部分并将其打印出来,获得预期值),但似乎内部没有效果(我得到的结果)代码表现得好像没有应用补丁).

我的测试是这样的(再次,虚构的代码):

from mock import patch
from django.test import TestCase

class MyTests(TestCase):

    @patch('mymodule.TAX_LOCATION', '')
    def test_tax_location(self):
        import mymodule
        print mymodule.TAX_LOCATION # '' …
Run Code Online (Sandbox Code Playgroud)

python patch mocking

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

如何获得补丁以忽略回车?

我正在尝试将修补程序应用于Linux系统上带有Windows行结尾的文件,并且由于文件中的回车而导致冲突.

-l选项(忽略空格)并没有忽视了EOL字符.反正有没有补丁忽略Windows风格的行结尾?

whitespace patch eol carriage-return

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

在修订版之间创建"补丁"?

似乎SVN的"补丁"功能并不完全是我想要的.我真正想要的是在修订版之间创建文件差异.因此,我选择rev1和rev 2,最后得到一个文件夹,其中包含在这些修订版本之间更改或添加的所有文件.

这可以用Tortoise SVN或普通的svn完成吗?

svn diff tortoisesvn patch

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

是否有一个知道缩进的差异工具(补丁)?

我经常使用gnu-utils补丁和差异.使用git,我经常这样做:

git diff
Run Code Online (Sandbox Code Playgroud)

通常简单的更改会创建一个大的补丁,因为唯一改变的是,例如,添加一个if/else循环,内部的所有内容都缩进到右边.

查看这样的补丁可能很麻烦,因为只有逐行手动比较才能指示缩进代码中是否有任何实质性更改.我们可能只谈论几行代码,或者几十个(或更多)嵌套代码.(我知道:这样一个假想的大函数最好分成更小的函数,但这不是重点).

当代码块中的唯一更改是缩进并让开发人员知道多少时,GNU diff/patch是否能够注意到?

有没有其他差异工具以这种方式运作?

编辑:好的,--ignore-space-change但是我们处于这样一种情况:或者我们有一个人类更可读的补丁,或者我们有一个完整的补丁,机器会知道如何阅读.难道我们不能拥有更好的两个世界中更好的差异工具,它可以显示人类空间的变化,同时允许机器完全应用补丁吗?

diff patch

22
推荐指数
1
解决办法
5214
查看次数

标签 统计

patch ×10

diff ×3

git ×2

c# ×1

carriage-return ×1

commit ×1

eol ×1

git-add ×1

merge ×1

mocking ×1

openrasta ×1

partial ×1

python ×1

rest ×1

split ×1

svn ×1

tortoisesvn ×1

upgrade ×1

whitespace ×1