2010-06-04 85 views
0

如何使用Perl而不使用Cvs模塊來執行CVS co?如何在不使用Cvs模塊的情況下執行CVS簽出?

+1

爲什麼你不想使用CVS模塊? – Ether 2010-06-04 16:01:53

+0

我的服務器系統不允許我安裝! – Tree 2010-06-04 16:35:52

+2

local :: lib可能證明有用,可以幫助您將模塊安裝到您的主目錄中,而不需要系統管理員的權限。 http://search.cpan.org/perldoc?local::lib – Schwern 2010-06-04 18:37:02

回答

6
+0

是最好的辦法嗎? – Tree 2010-06-04 15:49:09

+4

不好,最好使用CPAN提供的模塊,但是你要求不要使用它。 – 2010-06-04 15:50:46

+0

@ SCNCN2010 - 我通常首先嚐試CPAN搜索,然後考慮使用某種形式的系統命令。 – justkt 2010-06-04 15:51:56

1

雖然你不願使用一個模塊,我總是推薦它。 CPAN啓動Cvs::Simple。如果您有不使用模塊的商業案例原因,您可能需要考慮將其用作參考。

+0

「我拒絕你的現實,並替換我自己的。」 – jrockway 2010-06-04 15:54:31

+1

@jrockway - 可以有很好的理由不使用模塊,但OP沒有給出。 – justkt 2010-06-04 15:56:44

0

我在my blog寫了這個,但在這裏它是純文本。我不得不下載並安裝expectperl和IO :: Tty perl模塊。即使使用ssh密碼提示,這個小小的perl腳本也能成功執行cvs更新。


#!/usr/bin/perl 

use Expect; 

chdir("/files/hudson_local/jobs/MOJARRA_1_2X_ROLLING_GLASSFISH_2_1_1/workspace"); 
$ENV{"CVSROOT"} = ":ext:[email protected]/cvs/javaserverfaces-sources~cvs-repository"; 

($cvs = Expect->spawn("cvs update -d -P")) || die "Couldn't spawn cvs, $!"; 

unless ($cvs->expect(30, "Enter passphrase for key '/files/hudson_local/.ssh/id_rsa':")) { 
    die "Never got the passphrase prompt"; 
} 

print $cvs "not the real password\r"; 

unless ($cvs->expect(300, "cvs update: Updating www/legal/jsf-cddl")) { 
    die "Never saw update starting"; 
}