小编Eli*_*iot的帖子

Git命令在不修改工作树的情况下保存存储?

我一直想要使用git命令来保存存储而不修改我的工作树,作为一个轻量级备份,可以安全地从任何git重置或我可能做的任何事情来搞砸我的索引.基本上功能相当于"git stash save && git stash apply",但工作副本永远不会被触及,因为这可能会使某些文本编辑器/ IDE变得胡思乱想.

像这样的东西接近我想要的东西,但并不完全:

git update-ref refs/stash `git stash create "Stash message"`
Run Code Online (Sandbox Code Playgroud)

这在功能上有效,但我遇到的问题是,即使实际的存储提交确实包含了我的消息,"git存储列表"中也没有显示存储消息.考虑到存储的大小,存储消息非常重要.

git git-stash refs

40
推荐指数
5
解决办法
8297
查看次数

在 Mac OS 10.6 上获得排序的、人类可读的 du 输出的最有效方法是什么?

我曾经有一个名为 dusort 的可爱别名,它会打印出一个人类可读的大小列表,用于按大小排序的顶级子目录+文件。它就像一个在终端中运行的 Mac 迷你文件灯。

但现在我的别名在我将其复制到运行 Mac OS 10.6 的新 Mac 后就被破坏了。显然,我使用的那种要么来自 fink(我试图避免在我的新 mac 上重新安装),要么 10.6 版本的功能比 10.4 版本少(可能性很小)。

这是旧的别名,有点笨拙,因为它必须运行 du 两次才能获得机器可读和人类可读的文件大小(实际上我将其保存为 ~/bin 中的脚本,并带有 #!/bin/bash但这应该不重要): sort -n +1 <(paste <(du -hd1|cut -f1) <(du -d1))|cut -f1,3

关于以下方面有什么想法:A.让它再次发挥作用吗?B. 使用 bash 魔法让这个命令更优雅?

我知道我可以通过将 du 输出复制到临时文件或 fifo 或类似的废话来解决此问题,但这变得很荒谬。我决定来这里寻求帮助,以改掉我笨拙的狂欢习惯。请指教。:)

编辑:

现在我想了一下,这是有效的:

sort <(paste <(du -d1|cut -f1) <(du -hd1))|cut -f2,3
Run Code Online (Sandbox Code Playgroud)

不过,这似乎是一个巨大的杂凑,尤其是调用 du 两次,这可能会导致大型文件树上的 5 分钟和 10 分钟之间的差异...有关清理它的建议吗?

sorting bash command-line gnu-coreutils osx-snow-leopard

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

可以在Scheme REPL中重置用户环境吗?

方案新手问题 -

有没有办法让我重置当前的REPL环境(即默认用户环境)而不退出并重新启动我的REPL?基本上我想要一种消灭我当前环境的方法,这样我以前的定义都没有生效.这是使用GNU/MIT Scheme.

如果这是不可能的,那么在REPL中乱码时最好的做法是什么?我听说人们谈论创建和删除包,但大多数例子似乎是针对Common Lisp,这有点不同.

我确实在Clojure REPL中找到了有关如何执行此操作的信息,但有一些警告,看起来它是Clojure特定的:我可以清理repl吗?

谢谢!

编辑:通过退出并重新启动REPL进程本身,我能够在功能上完成同样的事情.我找到了一种方法来做到这一点,但使用vim-screen保持与我的编辑器(vim)的连接.如果在REPL中无法做到这一点,这是一个可接受的解决方案.但是,我会把问题打开一段时间,以确定是否有办法在语言中执行此操作,因为我认为这将是有益的.

lisp scheme reset read-eval-print-loop

6
推荐指数
1
解决办法
1514
查看次数

在PHP中使用模拟对象,在实例化自己的对象的函数中

我一直在研究如何将单元测试覆盖率添加到用PHP编写的大型现有代码库中.静态和可实例化类中的许多函数都会调用库或实例化对象,以获取与memcache和数据库的连接.它们通常看起来像这样:

public function getSomeData() {
    $key = "SomeMemcacheKey";
    $cache = get_memcache();

    $results = $cache->get($key);
    if (!$results) {
        $database = new DatabaseObject();
        $sql = "SELECT * from someDatabase.someTable";
        $results = $database->query($sql);

        $cache->set($key, $results);
    }

    return $results;
}
Run Code Online (Sandbox Code Playgroud)

我和我的同事正在尝试通过PHPUnit实现我们正在编写的一些新类的覆盖.我试图找到一种方法来为我们现有的代码库中的函数创建单独的测试单元测试,类似于上面的伪代码但是不成功.

我在PHPUnit文档中看到的示例都依赖于在类中使用一些方法来附加模拟对象,例如: $objectBeingTested->attach($mockObject);我查看了SimpleUnit,并在那里看到了相同的东西,模拟对象正在通过它的构造函数传递给类.这不会为实例化自己的数据库对象的函数留下太多空间.

有没有办法模拟这些类型的电话?我们可以使用另一个单元测试框架吗?或者我们是否必须改变我们将来使用的模式以便于单元测试?

我想做的是在运行测试时能够用模拟类替换整个类.例如,DatabaseObject类可以替换为mock类,并且在测试期间实例化它时,它实际上是模拟版本的实例.

我的团队一直在讨论重构我们在新代码中访问数据库和内存缓存的方法,也许是使用单例.我想如果我们以这样一种方式编写单例,它可以用模拟对象替换它自己的实例,那会有所帮助......

这是我第一次涉足单元测试.如果我做错了,请说出来.:)

谢谢.

php database phpunit unit-testing mocking

4
推荐指数
3
解决办法
2766
查看次数