小编Jos*_*osh的帖子

git add --interactive"你编辑的hunk不适用"

我正试图git add --interactive有选择地为我的索引添加一些更改,但我不断收到"你编辑的hunk不适用.再次编辑..."消息.即使我选择了e选项,我也会收到此消息,并立即保存/关闭我的编辑器.换句话说,根本不编辑hunk,补丁不适用.

这是我正在使用的确切示例(我正在尝试整理一个小型演示):

原始档案:

first change
second change off branch
third change off branch
second change
third change
fourth change
Run Code Online (Sandbox Code Playgroud)

新文件:

Change supporting feature 1
first change
second change off branch
third change off branch
second change
third change
fourth change
bug fix 1
change supporting feature 1
Run Code Online (Sandbox Code Playgroud)

我试图展示如何使用git add --interactive只添加"错误修复1"行到索引.在文件上运行交互式添加,我选择了补丁模式.它告诉我

diff --git a/newfile b/newfile
index 6d501a3..8b81ae9 100644
--- a/newfile
+++ b/newfile
@@ -1,6 +1,9 @@
+Change supporting feature 1
 first change
 second change off …
Run Code Online (Sandbox Code Playgroud)

patch interactive git-add

80
推荐指数
10
解决办法
3万
查看次数

自定义Guice范围,还是更好的方法?

这是我的问题:

首先要知道我正在编写模拟.这是一个独立的应用程序,是单线程的.我基本上有两类具有不同范围要求的对象.

  1. 在整个模拟过程中应该用作单例的类.以Random为例,作为一个例子.

  2. 一起创建的类组以及组内的每个实例都应该被视为Singleton.例如,假设RootObject是顶级类,并且具有依赖性,ClassA并且ClassB两者都具有依赖性ClassD.对于任何给定的RootObject,它的两个依赖(ClassAClassB)应该依赖于相同的实例ClassD.但是,ClassD不应在不同的实例之间共享实例RootObject.

希望这是有道理的.我可以想到两种方法.一种是将所有注入的对象标记为单例,创建根注入器,并在每次需要创建新RootObject实例时分离子注入器.然后,将其实例RootObject和所有依赖项创建为单例,但下次我创建另一个时,该范围信息将被丢弃RootObject.

第二种方法是实现某种类型的自定义范围.

Guice文档给出了相互矛盾的建议......一方面,它说你应该有一个注入器,理想情况下它被调用一次来创建一些顶级类.另一方面,它表示要远离自定义范围.

scope design-patterns guice

22
推荐指数
3
解决办法
5852
查看次数

git工作流:一次性合并和git-rerere - 重点是什么?

像大多数刚接触Git的人一样,我有一些困惑,试图破译适用于git merge和git rebase的用例.我想我终于决定,就最终的工作副本状态而言,它们会给你同样的东西.而且,它们都会导致相同的冲突.如果这不正确,请提供一个示例来启发我.

从我的角度来看,使用rebase而不是合并(如果你的更改没有被推或拉)的主要好处是保持历史的线性.我真正不理解的是开发git-rerere背后的原因.

从联机帮助页面中,git-rerere可以帮助您解决之前已解决的冲突.我将要参考的示例可以在http://www.kernel.org/pub/software/scm/git/docs/git-rerere.html找到.

如果你的项目的策略是不经常将更改从主线合并到主题分支(如linux内核),上面的例子说创建"丢弃"合并提交.本质上,将主服务器合并到您的主题中,运行测试以确保一切仍然有效,然后执行"git reset --hard HEAD ^",基本上抛弃合并提交.稍后,当您创建另一个"一次性"合并提交时,git-rerere会帮助您解决在第一次抛弃合并中已经解决的冲突.

有人可以解释为什么而不是经历创建临时合并提交的所有麻烦,开发人员不会只是将他的主题改为主人吗?这不是git-rebase的重点 - 获取更改,但避免合并?这不是完成同样的事情,并假设没有人拉动你的主题分支变化,这不是一个更简单的方法吗?抛弃合并+ git-rerere工作流真的只是针对你的更改被推/拉的情况吗?

最后一个问题 - 引用Linus的话说:"但如果我在你的日志中看到很多'合并分支linus',我就不会从你那里拉出来,因为你的树显然有随机的废话,不应该在那里......"Linus也会有不断变化的问题吗?

git merge conflict rebase

18
推荐指数
2
解决办法
2088
查看次数

Clojure函数(第n个[coll index])和组合(last(take index coll))之间有什么区别

我正在尝试通过Stuart Halloway的书"Programming Clojure".这整个功能对我来说都很新鲜.

我明白了

(defn fibo[]
    (map first (iterate (fn [[a b]] [b (+ a b)]) [0 1])))
Run Code Online (Sandbox Code Playgroud)

懒惰地产生斐波纳契数列.我不懂为什么

(last (take 1000000 (fibo)))
Run Code Online (Sandbox Code Playgroud)

工作,而

(nth (fibo) 1000000)
Run Code Online (Sandbox Code Playgroud)

抛出OutOfMemoryError.有人可以解释这两个表达方式有何不同?是(第n)以某种方式坚持序列的头部?

谢谢!

functional-programming clojure out-of-memory lazy-sequences

12
推荐指数
1
解决办法
489
查看次数

货物测试 - release会导致堆栈溢出.货舱为何没有?

在尝试编写优化的DSP算法时,我想知道堆栈分配和堆分配之间的相对速度,以及堆栈分配的数组的大小限制.我意识到堆栈帧大小限制,但我不明白为什么以下运行,生成看似真实的基准测试结果cargo bench,但运行时出现堆栈溢出失败cargo test --release.

#![feature(test)]
extern crate test;

#[cfg(test)]
mod tests {
    use test::Bencher;

    #[bench]
    fn it_works(b: &mut Bencher) {
        b.iter(|| { let stack = [[[0.0; 2]; 512]; 512]; });
    }
}
Run Code Online (Sandbox Code Playgroud)

testing benchmarking stack rust rust-cargo

9
推荐指数
1
解决办法
600
查看次数

rustc /货物是否具有-march = native等效项?

我觉得二进制可移植性并不是一个真正的问题,因此-march = native之类的东西可能始终是默认行为。我找不到任何一种说法。

optimization rust rust-cargo

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

确定Git存储库是否包含特定提交

我想确定远程git存储库(origin)是否包含特定的提交.我的用例如下:

我正准备创建一个公开发布.我想要包含代表我正在构建发行版的原始代码库的提交的SHA-1.

我还想确保提交不仅仅是一个本地提交,而且它实际上已被推送到中央存储库(origin).

我认为


git pull --all & git branch --contains commit-hash

然后检查输出以查看它是否包含当前分支的跟踪分支,有效,但看起来相当麻烦.我正在寻找一些更简洁的东西,比如git remote --contains origin commit-hash,或者git cat-file origin commit-hash.我认为在推送或拉动期间确定哪些对象需要传输时,Git必须使用一些管道命令 - 我对内部结构不够熟悉.

谢谢您的帮助.

git contains commit

4
推荐指数
2
解决办法
4518
查看次数