小编ado*_*ado的帖子

28
推荐指数
5
解决办法
1139
查看次数

制作一个shell脚本来更新3 git repos

我正在使用我在开发环境中克隆的5个回购.当我想更新git仓库时,我输入文件夹/ home/adrian/repo1 /并执行:

git checkout master git pull origin master

但是,每天早上我必须为其他4个回购做同样的事情.这很麻烦.

我可以把它放在shell脚本中吗?我的意思是,如果我在shell脚本中编写这些git命令并运行它,我能否更新所有的repos?

我在想写这样的东西......

cd repo1
git checkout master 
git pull origin master
cd ..
cd repo2
git checkout master 
git pull origin master
cd ..
Run Code Online (Sandbox Code Playgroud)

(我在linux上)

编辑:也许这比我想象的更具挑战性.大多数情况下,当我做"git pull origin master"时,我会得到像"你的本地更改......将被合并覆盖"这样的错误.所以我必须进入相应的分支并藏匿东西..

编辑2:

我正在考虑的是,如果发生冲突,请忽略它并转到下一个回购

cd repo1
git checkout master 
git pull origin master

(if there is conflict, ignore and go to the next line but dont stop here)

cd ..
cd repo2
git checkout master 
git pull origin master
cd ..
Run Code Online (Sandbox Code Playgroud)

但我不知道如何在括号中写出这个东西.

git shell

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

使用Try :: Tiny还是Eval?

哪个更安全,更好,更清洁,更推荐使用?

我用了:

sub insert_exec {
    my ($self, $c, $args) = @_;
    my ($params, $table, $model) = $self->_init({context => $c, args => $args});
    eval {  $model->insert($table, $params);
    };
    if ($@) {  return $c->show_error($@);  } ## error
    $c->redirect("/index");
}
Run Code Online (Sandbox Code Playgroud)

但对于这种情况(参见错误部分),我被告知使用Try :: Tiny更好吗?

我的问题是:你会怎么写这个,为什么你会这样选择?

perl

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

Perl:测试的定义是什么?

问这个问题我感到有点惭愧,但我很好奇.我最近写了一个脚本(没有在模块中组织代码),它读取商店的日志文件并将信息保存到数据库.

例如,我写了这样的东西(通过Richard Huxton):

while (<$infile>) {
    if (/item_id:(\d+)\s*,\s*sold/) {
        my $item_id = $1;
        $item_id_sold_times{$item_id}++;
    }
}
my @matched_items_ids = keys %item_id_sold_times;
my $owner_ids =
  Store::Model::Map::ItemOwnerMap->fetch_by_keys( \@matched_item_ids )
  ->entry();
for my $owner_id (@$owner_ids) {
    $item_id_owner_map{$owner_id}++;
}
Run Code Online (Sandbox Code Playgroud)

比如说,这个脚本叫做script.pl.在测试文件时,我创建了一个文件script.t,并且必须在script.t中重复一些script.pl块.复制粘贴相关代码部分后,我做了以下确认:

is( $item_id_sold_times{1}, 1, "Number of sold items of item 1" );
is( $item_id_owner_map{3},  8, "Number of sold items for owner 3" );
Run Code Online (Sandbox Code Playgroud)

等等等等.

但是有些人指出我写的不是考试.这是一个确认脚本.一个好的测试包括用模块编写代码,编写一个脚本,在模块中启动方法并为模块编写测试.

这让我想到了软件工程中最广泛使用的测试的定义是什么.也许你们中的一些甚至测试过Perl核心功能的人都可以帮到我.脚本(未模块化)无法正确测试?

问候

testing perl

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

使用Modulename之间的区别; 并使用Modulename();

Modulename之间有什么区别; 并使用Modulename(); ?有时我会看到,例如,使用鲤鱼; 有时使用Carp();

perl

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

Perl:数据结构,这是一个哈希吗?

假设我使用了以下关系

sub _relation {
     +{
        player1   => 0,
        player2  => 1,
        player3    => 0,
      },
      ;
}
Run Code Online (Sandbox Code Playgroud)
  1. 我该如何打印或提取"player1"?
  2. 我应该如何打印或提取与"player2"相关的值?
  3. 这是什么样的数据结构?哈哈?没有声明

perl

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

Perl嵌套结构

我有一个关于Perl中复杂结构的问题

my $data1 = [
  +{ id => 1, name => 'A' },
  +{ id => 2, name => 'B' },
  +{ id => 3, name => 'C' },
];

my $data3 = +{
   1 => +{ id => 1, name => 'A' },
   2 => +{ id => 2, name => 'B' },
   3 => +{ id => 3, name => 'C' },
};
Run Code Online (Sandbox Code Playgroud)

我该如何打印"B"?那是什么样的数据结构?有关Perl嵌套结构(哈希引用,数组引用等)的任何好的参考都可以理解吗?

先感谢您

perl

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

用更时尚的东西替换我的$ i(0,1,2)?

我通常以这种方式编写Perl测试

 for my $i ( 0, 1, 2 ) {
    is_deeply( $fetch_public_topic_ids->[$i],
 $expected_sorted_topic_list->[$i], 'Match' );
Run Code Online (Sandbox Code Playgroud)

何时$expected_sorted_topic是我的测试用例数据的数组引用.我有时得到反馈,我应该避免在我的"for"中写0,1,2,3 ......或0 ... 5,因为它被认为是"坏风格"?

但我有什么替代方案呢?

perl

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

我应该如何为此Perl哈希中的两个不同键分配相同的值?

当我有2个数据结构意味着相同的东西时,ex:

$c->req->cookies->{app1} = $c->req->cookies->{general};
$c->req->cookies->{app2} = $c->req->cookies->{general};
Run Code Online (Sandbox Code Playgroud)

我可以写:

( $c->req->cookies->{app1}, $c->req->cookies->{app2} ) = $c->req->cookies->{general};
Run Code Online (Sandbox Code Playgroud)

另外,我可以写:

   $c->req->cookies->{app1} =  $c->req->cookies->{app2 } = $c->req->cookies->{general};
Run Code Online (Sandbox Code Playgroud)

perl

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

除非()返回...之间的区别,并返回...除非()

在Perl中,之间是否有任何有意义的区别:

return $result unless ($exist_condition);
Run Code Online (Sandbox Code Playgroud)

unless ($exist_condition) return $result;
Run Code Online (Sandbox Code Playgroud)

perl

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

标签 统计

perl ×9

git ×1

shell ×1

testing ×1