小编Pet*_*ter的帖子

在Mercurial中,hg移植物和hg rebase之间的区别是什么

我知道Rebase是一个(捆绑式)扩展,而Graft是一个核心功能(取代了Transplant(捆绑)扩展).

graft 记录为:

将其他分支的更改复制到当前分支

此命令使用Mercurial的合并逻辑从其他分支复制单个更改,而不在历史记录图中合并分支.这有时被称为"backporting"或"cherry-picking".

rebase 记录为:

Rebase允许在Mercurial的历史中移动提交(使用一系列内部合并).这有很多用途:

  • 在分支之间移动变更集
  • "线性化"历史
  • 重新排序变更集
  • 将多个更改折叠为一个更改集

两者似乎都使用合并来移动或复制分支之间的变更集.

嫁接副本.Rebase移动.但rebase --keep副本.

因此,似乎我可以实现以任何方式复制变更集的目标.我使用哪一个是否重要?我什么时候应该更喜欢一个?

例如,只有在复制到不同的命名分支时才能使用移植?或者只有在只有一个变更集时?


编辑:可能是rebase是一个潜在的不安全的移植超集,但是只能draft在开发期间用于编辑本地历史记录的变更集,而移植是一个安全的rebase子集,可以public在维护后用于变换集以进行反向移植?

mercurial rebase

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

Python类型提示和上下文管理器

如何使用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)

python mypy

19
推荐指数
6
解决办法
3314
查看次数

在Mercurial中,过时的变更集可能会被迫变得过时吗?

在Mercurial中,具有后继的变更集标记为过时.

这个标记可以(强制)以某种方式被移除吗?

在使用hg strip删除后继者之后,原始变更集仍然标记为过时和已灭绝).hg evolve拒绝重新创建继任者.

mercurial

11
推荐指数
2
解决办法
3222
查看次数

.NET的ConcurrentDictionary的哪些成员是线程安全的?

System.Collections.Concurrent.ConcurrentDictionary的MSDN文档说:

线程安全

所有公共成员和受保护成员ConcurrentDictionary<TKey,?TValue>都是线程安全的,可以从多个线程同时使用.然而,构件通过接口中的一个访问的ConcurrentDictionary<TKey,?TValue>器具,包括扩展方法,不保证线程安全,并且可能需要由呼叫者进行同步.

(强调我的)

这似乎是自相矛盾的."所有成员都是线程安全的.但成员[有时]不是线程安全的."

我确实理解扩展方法当然不能保证是线程安全的.

但是"通过其中一个接口访问"是什么意思呢?是TryGetValue(IDictionary<TKey, TValue>接口的成员)线程安全吗?

.net c# concurrency multithreading concurrentdictionary

10
推荐指数
1
解决办法
1108
查看次数

PostgreSQL .sql文件的Visual Studio配置

我正在使用VS2013编辑用于PostgreSQL的 .sql文件.VS认为它们适用于SQL Server,并且会发出各种令人分心的错误和警告,因为语法略有不同.

配置VS以编辑.sql文件的最佳方法是什么?这些文件通常不适用于SQL Server,特别适用于PostgreSQL?

(最好没有VS插件,除非有一个非常棒的稳定插件.)

我可以以某种方式禁用SQL Server特定位吗?我是否必须将.sql文件与纯文本编辑器模式相关联并完全丢失语法高亮?

visual-studio visual-studio-2013

8
推荐指数
1
解决办法
1340
查看次数

WebException.Response.GetResponseStream()应该关闭/处理吗?

当我抓到.NET时WebException,我应该关闭/处理Response.GetResponseStream()

MSDN示例不会关闭或异常处理任何事情.

许多SO 答案建议处理响应和/或流.

我处理了流,这引起了很大的问题.因为GetResponseStream()(总是?/有时?)返回相同的实例.因此,当我获得响应流然后处理它时,可能会将异常重新抛出到另一个层,该层也会获得响应流,它将被处理掉并且不可读并因此而抛出更多异常.

.net c# idisposable httpwebresponse webexception

7
推荐指数
2
解决办法
1473
查看次数

警告 MSB3270 架构不匹配/AL1073 针对不同的处理器

我有具有本地化资源和 x64 本机依赖项的项目。有没有办法在没有警告的情况下构建它们?

如果我将目标平台设置为 AnyCPU,则会由于本机引用而收到此警告:

警告 MSB3270:正在构建的项目的处理器架构“MSIL”与参考“Native64”、“AMD64”的处理器架构之间存在不匹配。这种不匹配可能会导致运行时失败。请考虑通过配置管理器更改项目的目标处理器架构,以便在您的项目和参考之间对齐处理器架构,或者依赖于具有匹配项目目标处理器架构的处理器架构的参考。

好吧,足够公平,但是:

如果我将目标平台设置为 x64,我会收到此警告,因为本地化资源会自动创建一个带有错误目标架构的附属程序集:

ALINK:警告 AL1073:引用的程序集“mscorlib.dll”针对不同的处理器

微软说这是一个错误,但他们不会修复它。

那么现在怎么办?

c# c++ visual-studio

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

mypy:如何将可变长度元组“转换”回固定长度元组?

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)

python mypy

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

D3D9 64 位调试运行时

为了调试 D3D9 应用程序,启用 DirectX 9 调试运行时至关重要。

(必须先安装2010年6月的SDK 。)

对于 64 位应用程序,可以通过选中“使用 Direct3D 9 的调试版本”在DirectX 控制面板(64 位)中启用它。

问题:当控制面板关闭时,它会重置回零售,并且基本上不执行任何操作。

(32 位等效版本有效。)

direct3d direct3d9

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

用于在提交后查找下一个标签的 Mercurial revset

如何在特定变更集修订后找到下一个标签

例如,如果在 changeset 中引入了错误abcdef123456,我如何找到包含此错误的第一个版本(标签)?

我想我可以以某种方式使用HG revsets

mercurial

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