我知道Rebase是一个(捆绑式)扩展,而Graft是一个核心功能(取代了Transplant(捆绑)扩展).
graft
记录为:
将其他分支的更改复制到当前分支
此命令使用Mercurial的合并逻辑从其他分支复制单个更改,而不在历史记录图中合并分支.这有时被称为"backporting"或"cherry-picking".
rebase
记录为:
Rebase允许在Mercurial的历史中移动提交(使用一系列内部合并).这有很多用途:
- 在分支之间移动变更集
- "线性化"历史
- 重新排序变更集
- 将多个更改折叠为一个更改集
两者似乎都使用合并来移动或复制分支之间的变更集.
嫁接副本.Rebase移动.但rebase --keep
副本.
因此,似乎我可以实现以任何方式复制变更集的目标.我使用哪一个是否重要?我什么时候应该更喜欢一个?
例如,只有在复制到不同的命名分支时才能使用移植?或者只有在只有一个变更集时?
编辑:可能是rebase是一个潜在的不安全的移植超集,但是只能draft
在开发期间用于编辑本地历史记录的变更集,而移植是一个安全的rebase子集,可以public
在维护后用于变换集以进行反向移植?
如何使用Python类型提示注释上下文管理器?
import typing
@contextlib.contextmanager
def foo() -> ???:
yield
Run Code Online (Sandbox Code Playgroud)
关于contextlib的文档并未提及类型.
关于typing.ContextManager的文档也不是那么有用.
还有typing.Generator,至少有一个例子.这是否意味着我应该使用typing.Generator[None, None, None]
而不是typing.ContextManager
?
import typing
@contextlib.contextmanager
def foo() -> typing.Generator[None, None, None]:
yield
Run Code Online (Sandbox Code Playgroud) 在Mercurial中,具有后继的变更集标记为过时.
这个标记可以(强制)以某种方式被移除吗?
在使用hg strip
删除后继者之后,原始变更集仍然标记为过时和已灭绝).hg evolve
拒绝重新创建继任者.
System.Collections.Concurrent.ConcurrentDictionary的MSDN文档说:
线程安全
所有公共成员和受保护成员
ConcurrentDictionary<TKey,?TValue>
都是线程安全的,可以从多个线程同时使用.然而,构件通过接口中的一个访问的ConcurrentDictionary<TKey,?TValue>
器具,包括扩展方法,不保证线程安全,并且可能需要由呼叫者进行同步.
(强调我的)
这似乎是自相矛盾的."所有成员都是线程安全的.但成员[有时]不是线程安全的."
我确实理解扩展方法当然不能保证是线程安全的.
但是"通过其中一个接口访问"是什么意思呢?是TryGetValue
(IDictionary<TKey, TValue>
接口的成员)线程安全吗?
我正在使用VS2013编辑用于PostgreSQL的 .sql文件.VS认为它们适用于SQL Server,并且会发出各种令人分心的错误和警告,因为语法略有不同.
配置VS以编辑.sql文件的最佳方法是什么?这些文件通常不适用于SQL Server,特别适用于PostgreSQL?
(最好没有VS插件,除非有一个非常棒的稳定插件.)
我可以以某种方式禁用SQL Server特定位吗?我是否必须将.sql文件与纯文本编辑器模式相关联并完全丢失语法高亮?
当我抓到.NET时WebException
,我应该关闭/处理Response.GetResponseStream()
?
在MSDN示例不会关闭或异常处理任何事情.
我处理了流,这引起了很大的问题.因为GetResponseStream()
(总是?/有时?)返回相同的实例.因此,当我获得响应流然后处理它时,可能会将异常重新抛出到另一个层,该层也会获得响应流,它将被处理掉并且不可读并因此而抛出更多异常.
我有具有本地化资源和 x64 本机依赖项的项目。有没有办法在没有警告的情况下构建它们?
如果我将目标平台设置为 AnyCPU,则会由于本机引用而收到此警告:
警告 MSB3270:正在构建的项目的处理器架构“MSIL”与参考“Native64”、“AMD64”的处理器架构之间存在不匹配。这种不匹配可能会导致运行时失败。请考虑通过配置管理器更改项目的目标处理器架构,以便在您的项目和参考之间对齐处理器架构,或者依赖于具有匹配项目目标处理器架构的处理器架构的参考。
好吧,足够公平,但是:
如果我将目标平台设置为 x64,我会收到此警告,因为本地化资源会自动创建一个带有错误目标架构的附属程序集:
ALINK:警告 AL1073:引用的程序集“mscorlib.dll”针对不同的处理器
微软说这是一个错误,但他们不会修复它。
那么现在怎么办?
Python代码:
t = (1,2,3)
t = tuple(x+1 for x in t)
Run Code Online (Sandbox Code Playgroud)
mypy抱怨:
2: error: Incompatible types in assignment (expression has type "Tuple[int, ...]", variable has type "Tuple[int, int, int]")
Run Code Online (Sandbox Code Playgroud)
我应该怎么做才能避免该错误?这没有帮助:
t = (1,2,3)
t = tuple(x+1 for x in t)[0:3]
Run Code Online (Sandbox Code Playgroud)
这个“有效”:
from typing import Tuple
t: Tuple[int, ...] = (1,2,3)
t = tuple(x+1 for x in t)
Run Code Online (Sandbox Code Playgroud)
但我实际上不想t
成为一个变长元组。
我当然可以告诉 mypy 忽略该行:
t = (1,2,3)
t = tuple(x+1 for x in t) # type: ignore
Run Code Online (Sandbox Code Playgroud)
或者重复我自己:
t = …
Run Code Online (Sandbox Code Playgroud) 为了调试 D3D9 应用程序,启用 DirectX 9 调试运行时至关重要。
(必须先安装2010年6月的SDK 。)
对于 64 位应用程序,可以通过选中“使用 Direct3D 9 的调试版本”在DirectX 控制面板(64 位)中启用它。
问题:当控制面板关闭时,它会重置回零售,并且基本上不执行任何操作。
(32 位等效版本有效。)
如何在特定变更集修订后找到下一个标签?
例如,如果在 changeset 中引入了错误abcdef123456
,我如何找到包含此错误的第一个版本(标签)?
我想我可以以某种方式使用HG revsets。
c# ×3
mercurial ×3
.net ×2
mypy ×2
python ×2
c++ ×1
concurrency ×1
direct3d ×1
direct3d9 ×1
idisposable ×1
rebase ×1
webexception ×1