2011-10-30 3 views
0

GitHubにアクセスしてレポを設定するための本当のシンプルなPerlスクリプトを書きましたが、私は>>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

少なくとも2つの問題があります。

コマンド出力で何かを行うようにperlに指示していないし、エラーをテストしていないので、エラーメッセージと戻りコードが破棄されている。そのトラップ方法については、perldoc -f systemを参照してください。最低でも、このようなあなたのsystem通話書き直す:実際に間違っている何が起こっている

system 'git init' or die $!; 

をこの行です:

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

カンマ演算子が一緒に物事を結合するので、私はショーに、いくつかのブラケットを追加することはできません。 、これはない、非常に有用なsystemコマンドを実行します

(system "git remote add origin git\@github.com:"), $user,"/", $repo, ".git"; 

エラーを捨て、その後、負荷0を評価する:あなたは、その行は、Perlしてどのように見えますかfの文字列を順番に(非常に有用ではない)並べ替えます。

文字列を一緒に結合する場合は、ピリオド演算子を使用します。それを一緒に入れて、あなたはおそらくこのような何かをしたい:

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

あなたにもgit configラインを修正する必要があります。

+2

これは大抵正しいですが、壊れた 'system'コマンドの解析方法を除きます。これは、実際には 'git remote add origin git @ github.com:"、$ user、 "/"、$ repo、 ".git"); github.com: '引数に$ user、 "/"、$ repo、 ".git"の4つの引数を渡します。おそらくコマンドという名前はないので失敗しますが、エラーはチェックしませんでした。 – cjm

+0

アドバイスをいただき、ありがとうございました。現在、perldocs atmを読んでいます。しかし、 "またはdie $!"に変更した後私のシステムでは今、エラーが発生しています:「悪いファイル記述子」 – user1020372

+2

システムは、他のほとんどのものとは異なり、成功すると0を返します。 $をチェックするだけでは便利ではありません! $ではない。 (内部ではIPC :: System :: Simpleを使用しています) – ysth

関連する問題