小编use*_*428的帖子

git:如何查明某个分支是否有拉取请求?

我在 git 分支上。有没有办法查看该分支是否有拉取请求?

在这种特殊情况下,Atlassian-Stash 用于管理拉取请求。当然我可以使用Stash的Web界面来搜索拉取请求;但我也可以仅使用 git 命令行工具从脚本执行此操作吗?

git bitbucket-server

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

Ruby:Minitest,测试单元和实例变量

(已发布在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 unit-testing thread-safety

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

动态添加的实例方法无法访问类变量

(问题已在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)

为什么我能访问@@yf,但不从g

在警告和错误信息的提及中toplevel,Object对我来说是令人费解的.

@x印刷为5,所以它的环境是MC.这排除的可能性,@x@@y在定义m.g指的是顶层环境(Object …

ruby

6
推荐指数
2
解决办法
116
查看次数

zsh compinit:安装 Homebrew 后 Mac 上的不安全目录错误消息

在我的 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命令的完成系统。

homebrew zsh homebrew-cask macos-sierra

6
推荐指数
2
解决办法
6412
查看次数

Ruby 中“触发器已弃用”警告的解决方法

我从 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)

但我想知道是否有更简洁的方法来写这个。

ruby shell

6
推荐指数
0
解决办法
416
查看次数

git:复制一个版本进行游戏

在开发应用程序的过程中,我希望在某个方面能够单独复制我的工作,以便进行多项更改.这些变化并不意味着承诺!它只是在玩耍,尝试各种可能性.

这样做的" 最佳 "方式是什么?我找到了以下可能性,但是想得到那些对我有更多git经验的人的建议:

  1. 我可以使用git clone将存储库的副本放到不同的目录中,并使用它来玩.
  2. 我可以cp -r把我当前的git工作目录改为新的.

在情况(1)中,git知道克隆,rebase如果我真的想要,我可以稍后,但我不太可能做到这一点.

在这种情况下,有什么我应该知道的,这使解决方案(1)或(2)更好吗?或者有更好的方法吗?

git production-environment git-clone

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

zsh:命令替换和正确引用

我有一个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及其各种好东西是否没有内置的解决方案来解决这个问题?

zsh

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

Ruby:为什么我在这里得到"正则表达式字面值"的警告?

一个简单的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/是危险的.

我的问题:这个计划的危险在哪里?并且:我可以关闭此警告(理想情况下仅针对此声明,保持其他警告处于活动状态)吗?

顺便说一句,我在网上发现了几种关于这种代码的讨论,也提到了警告,但从来没有找到一个很好的解释为什么我们得到警告.

ruby

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

Zsh:为什么\ n用单引号引起来?

根据我的理解,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)

zsh

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

粗体颜色变体的 zsh 提示配置

我已经配置了我的终端(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。

有人可以向我解释,为什么会发生这种情况,并提出解决方法吗?

zsh command-prompt mintty

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