当我使用时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) 我在修补我的源代码树时遇到了问题,这不是通常的-p剥离问题.patch能够找到要修补的文件.
具体来说,我的问题是如何读取/解释.rej文件patch创建时几个帅哥失败.patch/ diff我见过的大多数讨论都不包括这个.
我想实现我的资源的部分更新,因为我有大量资源,并希望从它更新部分信息.我已经通过以下链接,但无法
弄清楚是否使用HTTP POST或PATCH方法.
http://jacobian.org/writing/rest-worst-practices/
https://github.com/archiloque/rest-client/issues/79
http://tools.ietf.org/html/draft-dusseault-http-patch-16
http://greenbytes.de/tech/webdav/draft-dusseault-http-patch-06.html
http://jasonsirota.com/rest-partial-updates-use-post-put-or-patch
http://bitworking.org/news/296/How-To-Do-RESTful-Partial-Updates
https://github.com/dharmafly/jsonpatch.js
请为此建议任何有效的解决方案.
假设我创建一个.exe文件,一切都很好.很棒很有效.
说我在软件上开发了一个新功能,我希望它可以用于已经有旧版本的人,如何让软件找到我的新版本,修补它,然后开展业务.
我似乎无法绕过这个问题.
谢谢.
编辑: 我很抱歉这个混乱,但我的意思是一个代码更明智的答案.我的代码中是否有一些特殊内容我应该允许更新?
例如,如果我想添加新功能,如何为已经打包的.exe添加"方法"?:S那让我旋转着.
我有一个源文件,其中添加了2个功能.为了允许采摘樱桃,我想分两个阶段:每个功能一个.到目前为止,在类似的情况下,使用git add -p我很好,提交一个功能,同时将本地文件留在最后阶段.
但是,我现在git add -p遇到了一个问题,即想要包含两个功能的编辑.即使编辑是在单独的行上,s(对于"拆分")不再想要将大块分成更小的部分......
简而言之:我无法通过这种方式分离2个功能的更改.有没有办法手动编辑补丁,例如使用vi,而不实际更改原始文件?
在Windows上,我有两个源文件,并希望创建一个有差异的补丁,就像这个.但我不确定,这个补丁的格式是什么,以及用什么应用程序来创建它?GNU diff输出与我在上面链接中看到的补丁非常不同.
"内部函数"是指从定义的同一模块中调用的函数.
我在单元测试中使用模拟库,特别是补丁装饰器.它们是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) 我正在尝试将修补程序应用于Linux系统上带有Windows行结尾的文件,并且由于文件中的回车而导致冲突.
该-l选项(忽略空格)并没有忽视了EOL字符.反正有没有补丁忽略Windows风格的行结尾?
似乎SVN的"补丁"功能并不完全是我想要的.我真正想要的是在修订版之间创建文件差异.因此,我选择rev1和rev 2,最后得到一个文件夹,其中包含在这些修订版本之间更改或添加的所有文件.
这可以用Tortoise SVN或普通的svn完成吗?
我经常使用gnu-utils补丁和差异.使用git,我经常这样做:
git diff
Run Code Online (Sandbox Code Playgroud)
通常简单的更改会创建一个大的补丁,因为唯一改变的是,例如,添加一个if/else循环,内部的所有内容都缩进到右边.
查看这样的补丁可能很麻烦,因为只有逐行手动比较才能指示缩进代码中是否有任何实质性更改.我们可能只谈论几行代码,或者几十个(或更多)嵌套代码.(我知道:这样一个假想的大函数最好分成更小的函数,但这不是重点).
当代码块中的唯一更改是缩进并让开发人员知道多少时,GNU diff/patch是否能够注意到?
有没有其他差异工具以这种方式运作?
编辑:好的,--ignore-space-change但是我们处于这样一种情况:或者我们有一个人类更可读的补丁,或者我们有一个完整的补丁,机器会知道如何阅读.难道我们不能拥有更好的两个世界中更好的差异工具,它可以显示人类空间的变化,同时允许机器完全应用补丁吗?