小编ben*_*izi的帖子

按类型过滤git diff

有没有办法限制git diff更改的文件?

我想看看两个提交之间的差异,但排除一个或另一个中不存在的路径(添加/删除).以下Perl单线程说明了我想要的大部分内容:

git diff master.. | perl -lnwe 'print unless /^(new|deleted) file/../^diff/ and not /^diff/'
Run Code Online (Sandbox Code Playgroud)

但是这会diff --git a/path b/path为新文件或删除的文件留下线条.另外,如果我不需要解析它会更好(如果任何hunk包含匹配/ ^ diff /的任何内容,也会失败).

我尝试的另一种选择是:

git diff --name-status (args) | perl -lnwe 'print if s/^M\s+//' | xargs git diff (args) --
Run Code Online (Sandbox Code Playgroud)

它的输出更好,但仍然感觉很乱.

git diff

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

ini_set('max_execution_time',0)是个坏主意吗?

是否有充分的理由不将PHP配置变量设置max_execution_time为0?

最近一位同事检查了一个文件的更改:

ini_set('max_execution_time', 0);
Run Code Online (Sandbox Code Playgroud)

在将输出返回给用户之前,对于执行某些复杂处理的页面,默认值太低.

该手册指出该设置的主要目的是:

防止写得不好的脚本捆绑服务器.

但也接着说:

您的Web服务器可能具有其他可能会中断PHP执行的超时配置.Apache有一个Timeout指令,IIS有一个CGI超时功能.两者都默认为300秒.有关具体详细信息,请参阅Web服务器文档

我们在Apache下运行,因此适用Timeout设置.有没有理由不在max_execution_time全球范围内设置为零?我很好奇是否有什么好处我没有把它设置为零.

php

59
推荐指数
2
解决办法
16万
查看次数

从脚本中获取当前的PHP可执行文件?

我想从PHP cli中运行PHP cli程序.在一些运行它的机器上,安装了php4和php5.如果我运行外部程序为

php5 outer.php
Run Code Online (Sandbox Code Playgroud)

我希望内部脚本使用相同的php版本运行.在Perl中,我将使用$^Xperl可执行文件.看来PHP中没有这样的变量?

现在,我正在使用$_SERVER['_'],因为bash(和zsh)将环境变量$_设置为最后运行的程序.但是,我宁愿不依赖于特定于shell的习语.

更新:版本差异只是一个问题.例如,如果PHP不在PATH中,或者不是PATH中找到的第一个版本,则查找版本信息的建议将无济于事.

此外,csh变体似乎没有$_为其进程设置环境变量,因此解决方法在那里不适用.

更新2:我正在使用$_SERVER['_'],直到我发现它没有做正确的事情xargs(这是有道理的...... zsh将它设置为它运行的命令,这xargs不是php5,并且xargs不会更改变量).回归使用:

$version = explode('.', phpversion());
$phpcli = "php{$version[0]}";
Run Code Online (Sandbox Code Playgroud)

php

20
推荐指数
3
解决办法
2万
查看次数

用于零或空的惯用Ruby过滤器?

我正在寻找一种更惯用的方法来过滤掉数组中的空元素或空元素.

我有很多形式的方法:

def joined
    [some_method, some_other_method].compact.reject(&:empty?).join(' - ')
end
Run Code Online (Sandbox Code Playgroud)

这将取和的结果,some_method并且some_other_method仅返回非零(compact基本上等于reject(&:nil?))和非空的一个().

在Array或Enumerable中有什么可以一次性获得同样的东西吗?

ruby idioms enumerable

18
推荐指数
1
解决办法
7734
查看次数

使用git-svn维护一组本地提交

我正在使用git开发针对subversion中托管的项目,使用git-svn:

git svn clone svn://project/
Run Code Online (Sandbox Code Playgroud)

我的一般工作流程是在主分支上重复编辑和提交,然后通过以下方式提交到svn存储库:

git stash
git svn dcommit
git stash apply
Run Code Online (Sandbox Code Playgroud)

"stash"命令保留的本地修改之一,即我不想提交到svn存储库,是一个已更改的数据库连接字符串.没有额外的"藏匿"步骤,保持本地更改的最方便方法是什么?

我怀疑像"藏匿"或"被子"这样的东西是我正在寻找的东西,但我仍然是新的足够git我认为我缺少一些会导致确切咒语的术语.

更新:我发现似乎避免git stash+ git-svn action+ git stash apply系列的唯一解决方案是手动更新git-svn ref:

(check in local-only change to 'master', then...)
$ cat .git/refs/master > .git/refs/remote/git-svn
$ git svn fetch (with at least one new SVN revision)
Run Code Online (Sandbox Code Playgroud)

这使得本地专用提交成为两个svn修订版之间的一个奇怪的(可能是不安全的)提交.

git git-svn git-stash quilt

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

APL中的续行

APL中是否存在行继续符,即表示输入尚未完成的字符并继续解析下一行?

我想要它的原因是以类似于其形状的格式输入数组,例如,而不是:

Forecast ? 4 6 ? 150 200 100 80 80 80 300 330 360 400 500 520 100 250 350 380 400 450 50 120 220 300 320 350
Run Code Online (Sandbox Code Playgroud)

我想写(\假设的延续字符在哪里):

Forecast ? 4 6 ? \
150 200 100  80  80  80 \
300 330 360 400 500 520 \
100 250 350 380 400 450 \
 50 120 220 300 320 350
Run Code Online (Sandbox Code Playgroud)

我正在使用GNU APL,如果它很重要,而且我是一个几乎完全的新手,所以如果我还没有看到它就道歉.

apl

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

将重复代码分解为单独函数的名称

我正在尝试寻找关于特定代码重构模式的研究/建议,但我发现很难找到,因为我不确定它是否有一个好名字.它与分解重复代码非常相似,除了代码首先没有重复:它只是隐藏在较大函数的条件分支中,可以通过该函数的参数访问.

在伪代码中,之前:

function frobnicate(id, check_only = false) {
    if id cannot be frobnicated
        return false
    if check_only
        return true
    // frobnicate id
    return true
}

// example calls:
okay_to_frobnicate = frobnicate(id, true)
frobnicate_success = frobnicate(id)
Run Code Online (Sandbox Code Playgroud)

后:

function can_be_frobnicated(id) {
    if id cannot be frobnicated
        return false
    else
        return true
}

function frobnicate(id) {
    if not can_be_frobnicated(id)
        return false
    // frobnicate id
    return true
}

// example calls:
okay_to_frobnicate = can_be_frobnicated(id)
frobnicate_success = frobnicate(id)
Run Code Online (Sandbox Code Playgroud)

编辑:添加示例调用.不清楚删除的参数是重构的一部分.

language-agnostic refactoring design-patterns

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