2014-04-17 3 views
6

을 사용하여 git pull 자동화 내가 'git pull'의 작업을 비트 버켓 서버에서 godaddy 공유 호스팅으로 자동화하려고 노력 중이다. 나는 Gad를 Godaddy 서버에 설치했고, 명령 행에서 'git clone', 'git pull' 등을 원격으로 실행할 수있다. 하지만 지금은 브라우저에서 직접 'git pull'을 실행하는 PHP 코드를 작성하려고합니다.PHP 코드

PHP 함수 exec()을 사용할 수 있지만 비트 버킷에서 가져 오기에는 암호가 필요합니다. 인터넷에서 많이 검색했지만 PHP 코드에서 비밀번호를 제공하는 방법을 찾을 수 없습니다.

참고 : 서버 2 대 (Godaddy-Bitbucket)간에 암호없는 인증을 설정하려고 시도했지만 작동하지 않았습니다. 그래서 위의 방법으로 만 남았습니다.

편집 : 설치를 완료했으며 이제 클릭 한 번으로 godaddy 서버를 업데이트 할 수 있습니다. 그러나 Godaddy의 서버에 대한 제한 때문에 PHP 코드 부분이 작동하지 않았습니다. 그래서 나는 동일한 일괄 처리 스크립트를 만들었고 서버에 대한 암호없는 인증과 자동화 된 git pull 명령을 만들었습니다. 여기에 그것을 할 단계는 (비슷한 문제가 어떤 일에 도움이 될 수 있습니다)입니다 : http://abhisheksachan.blogspot.in/2014/04/setting-up-godaddy-shared-hosting-with.html

+0

git에서 푸시를 사용하는 데 문제가 있습니까? – Dave

+0

서버에 ssh로 연결 한 다음 git을 당겨 줘야합니다. 암호를 두 번 입력하고 godaddy 서버의 작은 코드를 bitbucket에서 업데이트하려면 오랜 시간 동안 기다려야합니다. 아무도 내 암호를 볼 수 없도록 PHP 스크립트를 사용하여이 부분을 자동화하려고합니다. 단일 응용 프로그램에서 많은 개발자가 작업하고 있습니다. – asachanfbd

답변

10

대신 ssh를 당신이 요청에 직접 사용자/암호를 지정할 수 있습니다 HTTPS를 사용하는 경우 :

자식 클론 :

exec("git clone https://user:[email protected]/user/repo.git"); 

자식 풀 : 비밀번호 노출에

exec("git pull https://user:[email protected]/user/repo.git master"); 

대안 :

  • 대상 시스템에서 암호없는 ssh 키를 사용하십시오.
  • https에 클라이언트 측 인증서를 사용하십시오.

업데이트 : 디버그에 exec 명령 출력에서 ​​얻거나 물건을 확인해야하는 경우, 당신은 그것을 배열 인수를 전달할 수 있습니다 다음 원하는 위치에 표준 반복적 인 기술을 사용하여 출력 . 당신은 또한 간부 명령의 결과의 실행 로그를 유지하는 하나의 배열을 사용할 수 있습니다 exec()에 의해,

function execPrint($command) { 
    $result = array(); 
    exec($command, $result); 
    foreach ($result as $line) { 
     print($line . "\n"); 
    } 
} 
// Print the exec output inside of a pre element 
print("<pre>" . execPrint("git pull https://user:[email protected]/user/repo.git master") . "</pre>"); 

$result 배열을 덮어에 추가, 그리고되기 때문에 : 여기에 단순히 출력을 출력하는 예입니다 .

+0

회신 해 주셔서 감사합니다. 명령 행에서 작동하지만 PHP에는 출력이 없습니다. 나는 @ http://stackoverflow.com/questions/8562544/executing-git-commands-via-php를 보았지만 나는 윈도우 사용자이므로 솔루션이 어떻게 작동하는지 알 수 없었다! 당신이 그것에 대해 알고 있다면 제발 도와주세요. – asachanfbd

+0

PHP가 실제로 exec를 실행할 수 있는지 확인하십시오. 보안상의 이유로이 명령은 때때로 서버에서 완전히 제한 될 수 있습니다. – sfyn

+0

또한 exec는 선택적 두 번째 매개 변수로 배열을 사용하여 호출 할 수 있습니다. 즉, 배열은 행 단위 출력을 받고 루프 및 인쇄 등을 사용하여 표시 할 수 있습니다. 이것을 업데이트로 추가합니다. – sfyn