Perl脚本中的git clone错误

qrjkbowd  于 2023-05-12  发布在  Git
关注(0)|答案(1)|浏览(160)

我正在尝试编写一个Perl脚本来执行git操作。我在运行它的时候在脚本中得到错误,它似乎是与git克隆行。任何帮助都很感激。

#!/usr/bin/perl

use strict;
use warnings;

my $url = "git\@devbitbucket.ethos.com:7999";

print "What is the project asset code? ";
chomp(my $projectcode = <> );
print "$projectcode\n";

print "What is the repository name? ";
chomp(my $reponame = <> );
print "$reponame\n";

chdir "cd /export/appl/bbdev/scripts/files/";
chdir;
print "git clone ssh://$url/$projectcode/$reponame.git\n";
system( 'git clone ssh://$url/$projectcode/$reponame.git $reponame' );
#$reponame =~ s/\..*//s;

chdir "cd $reponame";
chdir;
system( 'cp -p /export/appl/bbdev/scripts/files/* .' );
system( 'git status' );
system( 'git add -A && git commit -m "Default Repository Initial Files" ');
system( 'git push --all' );
system( 'git status' );

exit 0;

错误

git clone ssh://git@devbitbucket.ethos.com:7999/mikt/test2.git
fatal: No directory name could be guessed.
Please specify a directory on the command line
fatal: not a git repository (or any parent up to mount point /appl)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
lqfhib0f

lqfhib0f1#

一些问题立即跳出来

字符串插值未发生

此行使用单引号括起的字符串。单引号字符串不插入Perl变量--在本例中为$url$projectcode等。

system( 'git clone ssh://$url/$projectcode/$reponame.git $reponame' );

您需要使用双引号来实现这一点

system( "git clone ssh://$url/$projectcode/$reponame.git $reponame" );

错误使用chdir

有几个地方使用参数调用chdir

chdir "cd /export/appl/bbdev/scripts/files/";
...
chdir "cd $reponame";

两者都在默默地失败(如果你检查了返回代码,这将是显而易见的)。当给chdir函数一个参数时,它必须是一个目录的名称。在这两个示例中都传递了前缀为“cd“的字符串。这些是不存在的目录。
你想要这个这个

chdir "/export/appl/bbdev/scripts/files/"
    or die "Cannot chdir: $!\n";
...
chdir $reponame
    or die "Cannot chdir: $!\n";

使用不带任何参数的chdir意味着“转到我的主目录”(有关更多详细信息,请参见chdir)。你根本不需要这些线。

相关问题