小编Emi*_*l G的帖子

如何进行Git合并操作忽略对两个分支进行的相同更改?

让我们假设我们有一个开发分支'A'和两个子分支'B1'和'B2'(都取自A).让我们说你在B1和B2的整个项目中运行格式代码命令(在我们的例子中是ReSharper的清理代码).

现在,当我们尝试将B2合并到B1时,Git将报告项目中所有文件的冲突(在我们的例子中相当大).当仔细观察每次冲突时,看起来Git认为即使在B1和B2中都进行了完全相同的改变,也会发生冲突(?)

有没有办法,自定义驱动程序/ git属性等,如果B1和B2中的文件完全相同,将使Git合并操作不报告冲突?

也许我错了,也许它是一个空白/行结束问题(例如B1和B2中的不同行结尾),在这种情况下我可以在堆栈溢出中找到解决方案.

git merge merge-conflict-resolution

20
推荐指数
1
解决办法
4192
查看次数

Autofac:注册Func <>或Factory?

我必须根据从服务器收到的一些消息/属性在运行时创建实现,这些消息/属性也需要由新创建的对象进行转换.我是Autofac的新手,但据我所知,有两种方法可以解决这个问题.

方法1:注册专用工厂

...
builder.RegisterType<MTextField>().Keyed<IComponent>(typeof(TextFieldProperties));
builder.RegisterType<ComponentFactory>().As<IComponentFactory>();

public class ComponentFactory : IComponentFactory
{
    private readonly IIndex<Type, IComponent> _lookup;

    public ComponentFactory(IIndex<Type, IComponent> lookup)
    {
        _lookup = lookup;
    }

    public IComponent Create(ComponentProperties properties)
    {
        var component = _lookup[properties.GetType()];
        component.Transform(properties);
        return component;
    }
}
Run Code Online (Sandbox Code Playgroud)

方法2:根据funcs注册

...
builder.RegisterType<MTextField>().Keyed<IComponent>(typeof(TextFieldProperties));
builder.Register<Func<ComponentProperties, IComponent>>(c =>
{
    var context = c.Resolve<IComponentContext>();
    return properties =>
    {
        var component = context.ResolveKeyed<IComponent>(properties.GetType());
        component.Transform(properties);
        return component;
    };
});
Run Code Online (Sandbox Code Playgroud)

问题:

我认为这可能是一个主观的事情,但无论如何我想问.

  • 哪种方法更可取,为什么?
  • 还有更好的解决方案吗?
  • 是否真的有必要在"方法2"中存储上下文?

编辑

好吧,我用autofac玩了一下.这是我目前的做法:

public class TransformerFactory<D, T> : ITransformFactory<D, T>
    where T : …
Run Code Online (Sandbox Code Playgroud)

c# ioc-container inversion-of-control autofac

7
推荐指数
1
解决办法
4802
查看次数

在 Postgres 中删除 USER(具有特权)IF EXIST

我需要有条件地在 Postgres 中删除一个用户(如果它不存在)。DROP USER IF EXIST 很好,但根据文档,我还需要先删除权限,但是 DROP OWNED 或 REVOKE 似乎有条件 IF EXIST 子句。如何有条件地删除用户的权限?

我的数据库是 Postgres v9.6

背景:

我正在尝试为 Postgres 创建一组设置/拆卸脚本,这些脚本将为一系列函数创建一个测试区域。安装脚本应该:

  • 创建一个用户(如果它不存在)
  • 创建包含一些表的架构(如果尚不存在)

和拆解将:

  • 删除用户(如果存在)
  • 删除架构(如果存在)

问题是测试套件可能会被中断并使数据库/测试区域处于损坏状态(例如,如果从未执行过拆卸),因此我必须在我的脚本中考虑到这一点。

根据 Postgres 的文档:

如果角色在集群的任何数据库中仍然被引用,则无法删除该角色;如果是这样,将引发错误。在删除角色之前,您必须删除它拥有的所有对象(或重新分配其所有权)

我的用户拥有一项特权,即 CONNECT 到我的测试模式所在的测试数据库。这是因为我打算使用测试用户登录并执行测试。

但是因为似乎没有关于 DROP OWNED BY 或 REVOKE 的任何条件子句,我看不出怎么做?

postgresql automated-tests

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

使用 PrincipalContext.ValidateUser 时的性能问题

我正在使用此处讨论的解决方案根据我的 ASP.NET Web 应用程序中的活动目录对用户进行身份验证。我编写了一个简单的 ADMembershipProvider 类,它与 FormsAuthentication 一起使用。在本地运行项目时工作正常,但当部署到网络中的服务器时,ValidateUser 调用需要很长时间(大约 20 秒)。

//Assumes using System.DirectoryServices.AccountManagement
public override bool ValidateUser(string username, string password) {
    using (var context = new PrincipalContext(ContextType.Domain)) {
        return context.ValidateCredentials(username, password);
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试将msdn上记录的名称容器参数添加到 PrincipalContext 构造函数,但这些参数似乎没有任何影响。

using (var context = new PrincipalContext(ContextType.Domain, "MyDomain", "OU=MyCompany,DC=some,DC=stuff")) {
    return context.ValidateCredentials(username, password);
}
Run Code Online (Sandbox Code Playgroud)

我们的网络中至少有两台不同的服务器存在同样的问题。服务器连接到 AD 并运行操作系统 Windows server 2003 SP2 (IIS6)

我的一个想法是,这个问题可能与我们的域对其他域有一些信任的事实有关,并且在验证用户时它们以某种方式参与。但是,我们尝试验证的用户仅存在于“我们的”广告中。

c# asp.net-membership active-directory

5
推荐指数
1
解决办法
3682
查看次数