我在 git 分支上。有没有办法查看该分支是否有拉取请求?
在这种特殊情况下,Atlassian-Stash 用于管理拉取请求。当然我可以使用Stash的Web界面来搜索拉取请求;但我也可以仅使用 git 命令行工具从脚本执行此操作吗?
(已发布在https://www.ruby-forum.com/topic/6876320,但在此处交叉,因为到目前为止我没有收到回复).
关于在Minitest和/或Test :: Unit中并行化测试的问题(即正确使用parallelize_me!):
假设我有一些辅助方法,这些方法是几个测试所需要的.根据我的理解,我不能在这样的方法中做这样的事情(简化示例):
def prep(m,n)
@pid = m
@state = n
end
def process
if @stat > 5 && @pid != 0
...
else
...
end
end
Run Code Online (Sandbox Code Playgroud)
我想我不能在Minitest和test-unit中做到这一点,因为如果我从几个测试函数调用prep和process,那么测试就不能再并行了 - 那些测试函数都设置并读取相同的实例变量.对?
现在,我的问题是,以下方法是否可以安全并行化:我将所有这些可变实例变量都设为哈希,我在设置中初始化如下:
def setup
@pid ||= {}
@state ||= {}
end
Run Code Online (Sandbox Code Playgroud)
我的"帮助方法"接收一个键(例如,测试方法的名称)并使用它来访问它们的"自己的"哈希元素:
def prep(key,m,n)
@pid[key] = m
@state[key] = n
end
def process
if @stat[key] > 5 && @pid[key] != 0
...
else
...
end
end
Run Code Online (Sandbox Code Playgroud)
这有点难看,但是:这是一种可靠的方法吗?这种访问散列线程安全的方式吗?我怎样才能做得更好?
(问题已在Ruby论坛发布,但没有引起任何答案).
这是我的代码:
class MC
def initialize
@x = 5
@@y = 6
end
def f
puts @x
puts @@y
end
end
m = MC.new
m.f
Run Code Online (Sandbox Code Playgroud)
m.f 产生预期的输出而没有错误:
5
6
Run Code Online (Sandbox Code Playgroud)
但是这个:
def m.g
puts @x
puts @@y
end
m.g
Run Code Online (Sandbox Code Playgroud)
生产:
5
warning: class variable access from toplevel
NameError: uninitialized class variable @@y in Object
Run Code Online (Sandbox Code Playgroud)
为什么我能访问@@y从f,但不从g?
在警告和错误信息的提及中toplevel,Object对我来说是令人费解的.
@x印刷为5,所以它的环境是MC.这排除的可能性,@x并@@y在定义m.g指的是顶层环境(Object …
在我的 Mac 上安装 Homebrew 和 Homebrew-Cask(作为管理员,用户 ID 为“admin”,运行 MacOS 10.12.6)后,我收到错误消息
zsh compinit: insecure directories, run compaudit for list.
Ignore insecure directories and continue [y] or abort compinit [n]?
Run Code Online (Sandbox Code Playgroud)
每次我启动zsh。投资 compaudit 的问题,我发现提到了几个不安全的目录,最与 Homebrew 相关 - 例如/usr/local/share/zsh/site-functions. 此目录及其条目具有访问权限 0755,这应该没问题,但是 - 例如 - 条目
/usr/local/share/zsh/site-functions/_brew
Run Code Online (Sandbox Code Playgroud)
这是 Homebrew 文件的符号链接,它定义了 zsh 的完成,拥有所有者admin。我的猜测是 zsh 想在这里看到用户root。
如果这是 Linux,我会简单地将这些文件的所有者更改为root,或者更确切地说,我会首先以 root 身份进行整个安装。然而,在 MacOS 10.12 中,他们甚至不允许“管理员”完全控制系统,虽然我可以以管理员身份登录,但我什至不知道 root 的密码。
这个问题有聪明的解决方案吗?或者,我们能否以某种方式教 zsh compinit 永远不要问这个烦人的问题,要么接受不安全的目录,要么跳过它们?或者最好以管理员身份登录,然后简单地从 中删除有问题的符号链接site-functions?我可以忍受一个不知道如何处理brew命令的完成系统。
我从 shell 脚本中调用 Ruby,如下所示:
ruby -n -e "print if %r($fromre)...%r($tore)" "$@"
Run Code Online (Sandbox Code Playgroud)
从 Ruby 2.6 开始,我收到警告
警告:触发器已被弃用
所以看来我必须做好准备,明智的 Ruby 大祭司已经决定这个(在我看来有用的)构造有一天会完全消失。
什么是简单的解决方法?当然我可以替换
print if %r($fromre)...%r($tore)
Run Code Online (Sandbox Code Playgroud)
经过
inside ||= %r($fromre)
if inside
print
inside = false if %r($tore)
end
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有更简洁的方法来写这个。
在开发应用程序的过程中,我希望在某个方面能够单独复制我的工作,以便进行多项更改.这些变化并不意味着承诺!它只是在玩耍,尝试各种可能性.
这样做的" 最佳 "方式是什么?我找到了以下可能性,但是想得到那些对我有更多git经验的人的建议:
git clone将存储库的副本放到不同的目录中,并使用它来玩.cp -r把我当前的git工作目录改为新的.在情况(1)中,git知道克隆,rebase如果我真的想要,我可以稍后,但我不太可能做到这一点.
在这种情况下,有什么我应该知道的,这使解决方案(1)或(2)更好吗?或者有更好的方法吗?
我有一个P接受文件名作为参数的脚本:
P file1 file2 file3 ....
Run Code Online (Sandbox Code Playgroud)
我还有一个脚本G,它生成文件名(通常是短列表),每行一个文件名。在我想用zsh编写的主脚本中,我想用G它来生成要由P. 天真的尝试是这样的:
P $(G)
Run Code Online (Sandbox Code Playgroud)
这几乎很有效,只是我生活在一个恶意的人喜欢创建带有嵌入空间的文件的世界中。如果G会生成这样的文件列表:
one_file
a file with spaces
Run Code Online (Sandbox Code Playgroud)
P将被称为
P one_file a file with spaces
Run Code Online (Sandbox Code Playgroud)
代替
P 'one_file' 'a file with spaces'
Run Code Online (Sandbox Code Playgroud)
一个明显的解决方案是将G和粘合P在一起,不是通过命令替换,而是通过某种语言(Ruby、Perl、Python、Algol68,....)的小程序,该程序执行P并将参数传递给读取标准输入。
这编写起来很简单,甚至可以重用。然而,我想知道,zsh及其各种好东西是否没有内置的解决方案来解决这个问题?
一个简单的Ruby程序,运行良好(使用Ruby 2.0.0):
#!/usr/bin/ruby
while gets
print if /foo/../bar/
end
Run Code Online (Sandbox Code Playgroud)
但是,Ruby还会输出警告警告:regex literal in condition.看来Ruby认为我的触发器表达式/foo/../bar/是危险的.
我的问题:这个计划的危险在哪里?并且:我可以关闭此警告(理想情况下仅针对此声明,保持其他警告处于活动状态)吗?
顺便说一句,我在网上发现了几种关于这种代码的讨论,也提到了警告,但从来没有找到一个很好的解释为什么我们得到警告.
根据我的理解,a \n应该解释为
"a\nb"
$'a\nb'
Run Code Online (Sandbox Code Playgroud)
但不在
'a\nb'
Run Code Online (Sandbox Code Playgroud)
但是,我看到以下内容:
(下面是我的zsh会话的字幕)
-0-1- ~ > zsh --version
zsh 5.1.1 (x86_64-unknown-cygwin)
-0-1- ~ > echo 'a\nb'
a
b
-0-1- ~ >
Run Code Online (Sandbox Code Playgroud) 我已经配置了我的终端(Cygwin 上的 mintty)以将颜色绑定到某些名称,例如
# (Excerpt of .minttyrc)
Green=103,252,66
BoldGreen=53,228,11
BoldAsColour=yes
Run Code Online (Sandbox Code Playgroud)
这种配置的工作原理是,例如,在配置 git 或 nano 时,我可以访问这些颜色。但是,当我想配置 zsh 提示时,只有非粗体变体有效。我想我使用错误的语法来指代粗体颜色。例子:
print -P 'X%F{green}ABC%fY'
Run Code Online (Sandbox Code Playgroud)
这会以“我的”绿色显示字母“ABC”,但是如果我执行以下任何操作
print -P 'X%F{bold green}ABC%fY'
print -P 'X%F{boldgreen}ABC%fY'
print -P 'X%F{bright green}ABC%fY'
print -P 'X%F{brightgreen}ABC%fY'
Run Code Online (Sandbox Code Playgroud)
整个字符串以正常的前景色显示,这可能意味着无法识别颜色名称。
我也试过
print -P 'X%B%F{green}ABC%f%bY'
Run Code Online (Sandbox Code Playgroud)
但这不使用 BoldGreen 值,而是以 - eh - 更粗的字体显示 ABC。
有人可以向我解释,为什么会发生这种情况,并提出解决方法吗?
ruby ×4
zsh ×4
git ×2
git-clone ×1
homebrew ×1
macos-sierra ×1
mintty ×1
shell ×1
unit-testing ×1