小编Joh*_*aye的帖子

人们如何找到git的子命令联机帮助页?

在我的linux系统上,我可以做"man git log"(注意空格),这将显示git-log(1)(带破折号)的联机帮助页,如预期的那样.

在我的MacOSX机器上,"man git log"仅显示git(1)的手册页.

linux的人怎么知道两个参数"git"和"log"应该结合起来找到"git-log"联机帮助页?如何在OSX中获得相同的结果?

linux git macos manpage

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

通过跟踪分支向Gerrit"git push"

推动对Gerrit的更改需要相当深奥的命令

git push origin HEAD:refs/for/branchname

我们编写了这个脚本,但我正在寻找一种本地化的方法.使用git强大的配置,看起来我可以预先配置它的大部分[1],这样就git push足够了......差不多.我坚持参考remote.<name>.pushrefspec.

我已经可以创建一个跟踪主题分支,以便git pull(没有其他参数)将更改从上游远程转移到我的主题分支.但是对于Gerrit,push和fetch引用refspecs是不一样的:一个从中获取(合并)refs/heads/trackbranch,但是一个推送到refs/for/trackbranch[2]

我可以配置pushrefspec remote.<name>.push,但语法非常基本:如果我放 push = refs/heads/*:refs/for/*

然后,这将尝试推动我的t-foo主题分支refs/for/t-foo.但是git有t-foo跟踪的信息trackbranch.我可以定义一个refspec,以便git自动尝试将任何内容推t-foo送到它refs/for/trackbranch吗?

我们目前正在使用脚本来执行此操作,我想我可以为每个主题分支定义推送refspec(可能通过更多脚本).我希望有一种本地的git方式,这样我们就不需要为我们的团队依赖更多的自定义内部脚本了.

[1]通过git checkout origin/upstream_branch -b topic_branch在现有分支中定义跟踪分支git branch --set-upstream-to origin/upstream_branch

[2]推动refs/for/*创建变更集以供审核.有了适当的权限,人们可以推动refs/heads/*绕过审查,但这否定了Gerrit的大部分观点.

git push gerrit refspec

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

Python在字符串格式宽度字段中计算零长度控制字符?

在 Python 3.4.3 中,我尝试使用 string.format() 运算符对某些字段进行宽度对齐,它似乎将零长度控制字符与宽度总数进行了计数。示例代码:

ANSI_RED = "\033[31m"
ANSI_DEFAULT="\033[39m\033[49m"

string1 = "12"
string2 = ANSI_RED+"12"+ANSI_DEFAULT

print("foo{:4s}bar".format(string1))
print("foo{:4s}bar".format(string2))
Run Code Online (Sandbox Code Playgroud)

这将输出:

foo12  bar
foo12bar
Run Code Online (Sandbox Code Playgroud)

(第二个输出的“12”为红色,但我无法在 SO 中重现它)

在第二种情况下,我丢失了字段宽度,我假设是因为 Python 看到字符串中的字符总数大于宽度,尽管大多数字符在符合 ANSI 的终端上导致零长度。

拥有 ANSI 颜色和工作字段宽度的干净方法是什么?

python terminal printf

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

Perl:常量和编译时与运行时哈希查找?

在Perl 5.26中,基于常量的哈希查找似乎在编译时解析,而不是运行时.如何强制它在运行时解决?

考虑以下简化的测试用例,从我试图编写的基于哈希的状态机中归结,其中键是状态标识符,值是状态函数.

use constant {
    STATE_1 => 1,
    STATE_2 => 2,
};

my %fsm;

%fsm = (
    STATE_1, sub {
        $fsm{STATE_2}->(@_);
        return STATE_2;
    },
    STATE_2, sub {
        return STATE_1;
    }
);

my $state = STATE_1;

$state = $fsm{$state}->();
Run Code Online (Sandbox Code Playgroud)

请注意STATE_1,我正在尝试调用该STATE_2函数.

但是,在运行时我得到这个:

Can't use an undefined value as a subroutine reference at ./self-reference-hash.pl line 15.
Run Code Online (Sandbox Code Playgroud)

这表示该$fsm{STATE_2}->(@_);STATE_1未定义.事实上,在这条线第一次出现的时候,该STATE_2功能没有定义还没有,但我对哈希查询计数在运行时得到解决.

如果我替换$fsm{STATE_2}->(@_);my $tmp = STATE_2; $fsm{$tmp}->(@_);然后它按预期工作,这似乎是hacky.

有更清洁的方法吗?

perl hash constants

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

如何通过编译器更改二进制文件的DWARF信息中包含的调试路径

GCC包含源文件的路径,该文件用于在其DWARF调试信息中生成目标文件(使用-g编译时).

但是,GDB的搜索规则意味着set subsitute-path如果我将源代码移动到不同的子目录,我必须使用鲜为人知的.或者,也许我想隐藏我的源文件的一些路径信息,也许只是缩短它.

GCC是否提供了更改二进制文件调试信息中包含的源路径的选项?

debugging gcc gdb path dwarf

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

标签 统计

git ×2

constants ×1

debugging ×1

dwarf ×1

gcc ×1

gdb ×1

gerrit ×1

hash ×1

linux ×1

macos ×1

manpage ×1

path ×1

perl ×1

printf ×1

push ×1

python ×1

refspec ×1

terminal ×1