小编Dav*_*ner的帖子

如何在Git中有选择地合并或选择来自另一个分支的更改?

我在一个新项目上使用git,该项目有两个并行 - 但目前是实验性的 - 开发分支:

  • master:导入现有的代码库加上一些我一般都知道的mod
  • exp1:实验分支#1
  • exp2:实验分支#2

exp1exp2代表两种截然不同的架构方法.直到我走得更远,我无法知道哪一个(如果有的话)会起作用.当我在一个分支中取得进展时,我有时会在另一个分支中进行编辑,并且只想合并那些.

将选择性更改从一个开发分支合并到另一个开发分支而将其他所有内容合并的最佳方法是什么?

我考虑过的方法:

  1. git merge --no-commit 然后手动取消大量编辑,我不想在分支之间做出共同点.

  2. 手动将公共文件复制到临时目录,然后git checkout移动到另一个分支,然后更多地手动从临时目录复制到工作树中.

  3. 以上的变化.暂时放弃exp分支并使用另外两个本地存储库进行实验.这使得手动复制文件更加简单.

所有这三种方法都显得乏味且容易出错.我希望有更好的方法; 类似于过滤器路径参数的东西会git-merge更具选择性.

git git-merge git-patch git-cherry-pick

1374
推荐指数
22
解决办法
69万
查看次数

如何在Perforce树中查找未跟踪的文件?(svn状态的模拟)

任何人都有一个脚本或别名来查找Perforce树中未跟踪(真的:未添加)的文件?

编辑:我更新了这个问题的答案,因为看起来P4V在2009年1月的版本中增加了对此的支持.

version-control perforce

85
推荐指数
7
解决办法
4万
查看次数

在Haskell中,多指数集合最惯用的方法是什么?

在C++和其他语言中,附加库实现了多索引容器,例如Boost.Multiindex.也就是说,一个集合存储一种类型的值,但在这些值上保持多个不同的索引.这些索引提供不同的访问方法和排序行为,例如map,multimap,set,multiset,array等.多索引容器的运行时复杂性通常是各个索引的复杂性的总和.

是否有Haskell的等价物或人们自己组成?具体来说,使用set-type索引(T是实例Ord)以及map类型的索引来实现类型T集合的最惯用方法是什么(假设类型K的键值可以是为每个T提供,明确地或通过功能T -> K)?

haskell

15
推荐指数
2
解决办法
1593
查看次数

有没有更好的方法在Haskell中实现多通道Writer monad?

问题:

我需要在同一个Haskell monad变换器堆栈中编写不同类型的编写器monad.除了tell用于编写调试消息之外,我还想用它来编写一些其他数据类型,例如在其他一些上下文中传输的数据包.

我已经检查了Hackage的通道化编写器monad.我希望找到的是类似于编写器的monad,它支持多种数据类型,每种数据类型代表runWriter结果中不同的"逻辑"通道.我的搜索没有发现任何事情.

解决方案尝试1:

我解决问题的第一种方法是WriterT沿着这些线堆叠两次:

type Packet = B.ByteString

newtype MStack a = MStack { unMStack :: WriterT [Packet] (WriterT [String] Identity) a }
  deriving (Monad)
Run Code Online (Sandbox Code Playgroud)

但是,我声明时遇到了问题,MStack因为这两个实例MonadWriter [Packet]MonadWriter [String]:

instance MonadWriter [String] MStack where
  tell = Control.Monad.Writer.tell
  listen = Control.Monad.Writer.listen
  pass = Control.Monad.Writer.pass

instance MonadWriter [Packet] MStack where
  tell = lift . Control.Monad.Writer.tell
  listen = lift . Control.Monad.Writer.listen
  pass = lift . Control.Monad.Writer.pass
Run Code Online (Sandbox Code Playgroud)

来自ghci的后续投诉:

/Users/djoyner/working/channelized-writer/Try1.hs:12:10:
    Functional dependencies …
Run Code Online (Sandbox Code Playgroud)

monads haskell monad-transformers

12
推荐指数
2
解决办法
727
查看次数

如何覆盖包代码提供的Haskell类型类实例?

我有一些旧的Haskell代码,包括QuickCheck测试用例.较新版本的QuickCheck(我刚刚升级到2.4.0.1)包括类型类实例Arbitrary Word8和其他版本.这些在Test.QuickCheck.Arbitrary的旧2.0.x版本中不存在.

虽然在一般意义上有用,但是包提供的Arbitrary Word8生成器不是我想要用于我的测试套件的生成器:

instance Arbitrary Word8 where
  arbitrary = frequency [(2, oneof [return ctrlFrameDelim, return ctrlEscape, return ctrlXon, return ctrlXoff]),
                         (8, choose (0, 255))]
Run Code Online (Sandbox Code Playgroud)

上面的代码在编译时导致重复的实例声明错误.我可以使用默认生成器来获取此代码,但我想知道解决此问题的正确方法.

我考虑(但未测试)的一种可能的解决方案是Word8使用别名newtype.这将导致整个来源的许多变化,所以我希望有一个更清洁的方式.

编辑:如下面的评论所述,接受的答案非常简洁,易于实施:

newtype EncodedByte = EncodedByte Word8

instance Arbitrary EncodedByte where
  arbitrary = liftM EncodedByte $ frequency [(2, elements [ctrlFrameDelim, ctrlEscape, ctrlXon, ctrlXoff]),
                                             (8, choose (0, 255))]
Run Code Online (Sandbox Code Playgroud)

haskell quickcheck

11
推荐指数
1
解决办法
3455
查看次数

即使没有CA匹配,也强制ASP.NET WebAPI客户端发送客户端证书

我有一个特定的应用程序,需要使用客户端证书进行HTTPS请求的相互身份验证.服务器具有灵活的证书验证策略,允许它接受服务器证书存储中不存在的自签名客户端证书.众所周知,使用curl作为客户端可以正常工作.

我通过测试和数据包嗅探确定的是,微软的ASP.NET HttpClient试图在SSL握手过程中过于聪明.如果该客户端证书WebRequestHandler.ClientCertificates与服务器的可信根之一具有信任链,则该特定客户端将仅使用客户端证书(来自集合).我观察到的是,如果没有带有信任链的证书,那么客户端在握手期间根本不会发送证书.

这是可以理解的默认行为,但是过于严格,似乎没有办法将其关闭.我已经尝试了其他各种WebRequestHandler属性,包括AuthenticationLevelClientCertificateOptions,但无济于事.

有没有办法强制HttpClientClientCertificates集合中可用时发送客户端证书,即使它看起来不会在服务器端验证?我对那些直截了当和肮脏(反射黑客)解决方案持开放态度,因为我真的需要这个客户端才能工作.

client-certificates .net-4.5 asp.net-web-api

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

什么Haskell类型系统魔术允许连接的定义?

所述join效用函数被定义为:

join :: (Monad m) => m (m a) -> m a
join x = x >>= id
Run Code Online (Sandbox Code Playgroud)

鉴于>>=is Monad m => m a -> (a -> m b) -> m bidis 的类型,a -> a该函数如何也a -> m b可以在上面的定义中输入?什么是mb在这种情况下?

haskell

6
推荐指数
2
解决办法
199
查看次数