小编Joa*_*ora的帖子

Git:发现哪些提交触及了一系列行

我无法弄清楚如何使用它git blame来获取曾经触及给定范围的行的提交集.还有像类似的问题这一个,但接受的答案没有给我带来更进一步.

假设我的定义从第1000行开始foo.rb.它只有5行长,但改变这些行的提交数量是巨大的.如果我做

git blame foo.rb -L 1000,+5
Run Code Online (Sandbox Code Playgroud)

我引用了(最多)五个不同的提交来改变这些行,但我也对"它们后面的提交"感兴趣.

同样的,

git rev-list HEAD -- foo.rb | xargs git log --oneline
Run Code Online (Sandbox Code Playgroud)

几乎是我想要的,但我无法指定行范围 git rev-list

我可以传递一个标志来git blame获取曾触及这五行的提交列表,或者构建提取此类信息的脚本的最快方法是什么?让我们暂时忽略定义曾经多于或少于5行的可能性.

git blame

62
推荐指数
3
解决办法
1万
查看次数

rspec 2:检测对方法的调用但仍然执行其功能

我想检查一个方法是否被完全(n)次调用,我仍然希望该方法执行其原始函数.考虑一个简单的缩略图系统来缓存缩略图文件,并确保只在第一个请求时调用创建缩略图的ImageMagick的"转换"可执行文件.

  it "this passes: should detect a cached version" do
    thumbnail_url = thumbnail_url_for("images/something.jpg")
    get thumbnail_url
    last_response.should be_ok
    Sinatra::Thumbnail.should_not_receive(:convert)
    get thumbnail_url
    last_response.should be_ok
  end

  it "this fails:  should detect a cached version" do
    Sinatra::Thumbnail.should_receive(:convert).exactly(1).times
    thumbnail_url = thumbnail_url_for("images/something.jpg")
    get thumbnail_url
    last_response.should be_ok
    get thumbnail_url
    last_response.should be_ok
 end
Run Code Online (Sandbox Code Playgroud)

在我的情况下,我第一次尝试逃脱,但可能有一些我不这样做的情况.第二个失败是因为Thumbnail.convert检测到了调用,但方法本身没有做任何事情.有没有办法只检测对方法的调用并让它做原始的事情?

顺便说一句:我怀疑这个问题非常相似,但后来我在描述中迷失了,也没有答案......

rspec2

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

无法将jQuery UI模式对话框变为模态

我无法获得一个jQuery UI 模式对话框,它可以像在演示中一样工作!考虑这个食谱:

<html>
  <head>
    <script type="text/javascript" src="/javascripts/jquery.js"></script>
    <script type="text/javascript" src="/javascripts/jquery-ui.js"></script>
  </head>
  <body>
    <p>First open a modal <a href="" onclick="$('<div>something</div>').dialog({modal: true}); return false;"> dialog</a></p>
    <p>Then try to hover over <a href="broken"> me</a></p>
    <p>And <a onclick="alert('clicked!'); return false;" href="alsobroken"> click me!</a></p>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

当对话框处于活动状态时,第二个链接被正确禁用,但第三个链接(onclick)仍然有效!此外,当悬停两个链接时,会出现一个小浏览器手.这不像演示......我做错了什么?

javascript jquery jquery-ui

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

如何在 jscodeshift 中包装除导入之外的所有顶级语句和声明?

我有这个 AST 浏览器片段,它几乎可以让我做我想做的事情,那就是:

function bar() {return 42;}
var baz = {}
import 'get-outta-here';
Run Code Online (Sandbox Code Playgroud)

进入

import 'get-outta-here';

function wrap() {
  function bar() {return 42;}
  var baz = {}
}();
Run Code Online (Sandbox Code Playgroud)

即包装除那些之外的所有顶级语句和声明import。但是,我的 jscodeshift 转换存在我无法理解的错误。

  • 我可以包装并删除导入,但无法将它们移动到顶部。
  • 我可以将它们移至顶部但不能包裹

我怀疑我的包装逻辑已经关闭:root.get().value.program.body听起来很老套。

export default function transformer(file, api) {
  const j = api.jscodeshift;
  const root = j(file.source);

  const wrapper = j(j.expressionStatement(
        j.callExpression(
          j.functionExpression(
            j.identifier('foo'), [],
            j.blockStatement(root.get().value.program.body)
          ), []), []));
  
  const nodes = root.find(j.ImportDeclaration).nodes();
  root.find(j.ImportDeclaration).remove();

  // wraps, but doesn't re-add the import at top-level …
Run Code Online (Sandbox Code Playgroud)

javascript jscodeshift

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

C++逻辑运算符返回值

这是我用C++编写的一些代码.有一个addAVP()函数的调用

dMessage.addAVP(AVP_DESTINATION_HOST, peer->getDestinationHost() || peer->getHost());
Run Code Online (Sandbox Code Playgroud)

它有两个版本:一个在第二个参数中重载addAVP(int, char*),另一个在addAVP(int, int).我发现我使用的C++编译器调用的addAVP(int, int)版本不是我想要的版本,getDestinationHost()而且getHost()都返回char*.

尽管如此|| 运算符定义为返回bool,所以我可以看到我的错误在哪里.Bool不知怎的算作一个整数,这个编译干净并调用第二个addAVP().

最近我使用了很多动态类型的语言,即lisp,上面的代码是正确的,可以毫无后顾之忧地编写.很明显,C++中的上述代码显然是一个很大的错误,但仍然有一些问题:

  1. 我应该使用这种快捷方式,即在C++中使用|| -operator的返回值.这个编译器是否依赖?

  2. 想象一下,我真的,真的必须编写好的a || b语法,这可以在C++中干净利落地完成吗?通过编写运算符重定义?不失性能?

作为我原始请求的后续,或者我自己对2的回答:-)我正在考虑使用类封装(邪恶?)rawpointer:

class char_ptr_w {
  const char* wrapped_;
public:
  char_ptr_w(const char* wrapped) : wrapped_(wrapped) {}
  char_ptr_w(char_ptr_w const& orig) {  wrapped_=orig.wrapped(); }
  ~char_ptr_w() {}
  inline const char* wrapped() const { return wrapped_; }
};

inline char_ptr_w operator||(char_ptr_w &lhs, char_ptr_w& rhs) {
  if (lhs.wrapped() != NULL) …

c++

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

标签 统计

javascript ×2

blame ×1

c++ ×1

git ×1

jquery ×1

jquery-ui ×1

jscodeshift ×1

rspec2 ×1