我编写了一个真正简单的Perl脚本来访问GitHub并设置一个repo,但我收到>>fatal: 'origin' does not appear to be a git repository
错误。
非常感谢任何见解。
#!/usr/bin/perl
use 5.006;
use strict;
#use warnings
my $file;
my $dir;
my $user;
my $email;
my $repo;
print ("Enter your user name\n");
$user = <STDIN>;
chomp $user;
print ("\nEnter your email address\n");
$email = <STDIN>;
chomp $email;
print ("\nEnter a directory path..\n");
$dir = <STDIN>;
chomp ($dir);
sub openDIR{
if (opendir(DIR, $dir)) {
chdir $dir;
print ("You are now in directory >>> ", $dir, "\n");
system 'touch README';
system 'ls -l'
} else {
print ("The directory can not be found, please try again");
die;
}
}
sub git{
print ("Enter the name of the repo you created on Git Hub.\n");
$repo = <STDIN>;
chomp $repo;
system 'git config --global user.name', $user;
system 'git config --global user.email', $email;
system 'git init';
system 'git add README';
system "git commit -m 'first commit'";
system "git remote add origin git\@github.com:", $user,"/", $repo, ".git";
system 'git push origin master'
}
openDIR();
git();
答案 0 :(得分:1)
这里至少有两个问题。
您没有指示perl对命令输出执行任何操作,也没有测试错误,因此任何错误消息和返回代码都将被丢弃。请阅读perldoc -f system
以了解如何捕获它。至少重写一次system
这样的电话:
system 'git init' or die $!;
这条线实际出了什么问题:
system "git remote add origin git\@github.com:", $user,"/", $repo, ".git";
逗号运算符不会将事物连接在一起,所以让我添加一些括号来向您展示该行对perl的看法:
(system "git remote add origin git\@github.com:"), $user,"/", $repo, ".git";
这会运行一个非常有用的system
命令,抛弃错误,然后按顺序评估一串字符串(也不是非常有用)。
如果要将字符串连接在一起,请使用句点运算符。把它放在一起,你可能想要这样的东西:
system "git remote add origin git\@github.com:". $user."/". $repo. ".git" or die $!;
您还需要修复git config
行。