2011-10-30 144 views
0

我寫了一個真正簡單的Perl腳本來訪問GitHub並設置了一個倉庫,但是我收到了>>fatal: 'origin' does not appear to be a git repository錯誤。'origin'似乎不是一個git倉庫'

任何有識之士將不勝感激。

#!/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

嘗試在添加存儲庫以查看它是否實際添加後停止該程序。 – lc2817

+0

嘗試[Git :: Wrapper](http://search.cpan.org/perldoc/Git::Wrapper) –

回答

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命令,扔掉的錯誤,然後計算負載Ø f字符串順序(也不是非常有用)。

如果您想要一起連接字符串,請使用句點運算符。把它放在一起,你可能想要這樣的東西:

system "git remote add origin git\@github.com:". $user."/". $repo. ".git" or die $!; 

您還需要修復git config行。

+2

除了關於如何解析斷開的'system'命令,這大部分都是正確的。它實際上意味着'system(「git remote add origin git \ @ github.com:」,$ user,「/」,$ repo,「.git」);'即運行一個名爲''git remote add origin git @ github.com:''傳遞4個參數:$ user,「/」,$ repo,「.git」。由於您可能沒有命名的命令,因此失敗,但您沒有檢查錯誤。 – cjm

+0

感謝您的建議,它非常有幫助,目前正在閱讀'perldocs'atm。然而在改變爲「或者死亡$!」之後在我的系統調用我現在得到一個錯誤:「壞文件描述符」 – user1020372

+2

系統成功返回0,不像大多數其他事情。檢查$也是沒有用的!而不是$ ?.我會建議在頂部使用'use autodie'系統''(內部使用IPC :: System :: Simple) – ysth

相關問題