문제

SVN에 대한 다음 사전 커밋 스크립트를 작성하여 사용자가 파일 커밋에 최소 정보를 제출했는지 확인했습니다. 그러나 디렉토리를 추가/삭제하려고 할 때 이제 실패합니다. 나는 그것이 분명히 실패한 이유를 알고 있습니다. 나는 사전 커밋 스크립트가 모든 행동에 대해 호출되었다는 것을 몰랐습니다. 수행중인 작업을 위해 어떻게 필터링합니까? 함께 할 수 있습니까? SVN 로그 아니면 다른 것을 사용해야합니까?

<?php
define('SVNLOOK', "\"C:\Program Files\CollabNet\Subversion Server\svnlook.exe\"");
define('NOTEXT', 1000);
define('NOPATTERNMATCH', 1001);
define('ERRORPROCESSING', 9999);

$repo_path = $argv[1];
$transaction = $argv[2];
$tracking_regex_pattern = "/\b(?:bug|issue|ter)\s*[#]{0,1}(\d+)\b/i";

exec(SVNLOOK . " log $repo_path -t$transaction", $revisions);

//loop through transaction message line by line for validation
$validation_passed = (bool) false;
$has_text = (bool) false;
foreach($revisions as $change_line){
  $change_line = trim($change_line);
  if (!empty($change_line)){
    $has_text = true;
    if (preg_match($tracking_regex_pattern, $change_line)) {
        $validation_passed = true;
    }
  }
}

if(!$validation_passed){
  switch($has_text) {
    case true:
      throwError(NOPATTERNMATCH, $revisions);
      break;
    case false:
      throwError(NOTEXT, $revisions);      
      break;
    default:
      throwError(ERRORPROCESSING, $revisions);
      break;
  }   
}else{
  exit(0);
}

function throwError($error_code, $revisions){
  $fp = fopen('php://stderr', 'w');
  fwrite($fp, "********** (Error Code: $error_code) **********\n");
  foreach($revisions as $change_line) {
    fwrite($fp, $change_line."\n"); 
  }
  fclose($fp); 
  exit($error_code);  
}
?>

현재 트랜잭션에서 어떤 SVN 명령이 자리 잡고 있는지 테스트합니까? 기본적으로 나는 유효성 검사 만 실행하기를 원합니다. SVN 커밋 그리고 사본이 아니라 mkdir 등 ...

미리 감사드립니다 !!!

편집하다: 원래 게시물을 명확히했을 것입니다. TortoisesVN의 Create Folder를 사용하고 있습니다. 아마도 TortoisesVN이 일종의 커밋 작업을하고 있습니까?

도움이 되었습니까?

해결책

나는 당신에게 큰 대답이 없지만 ...

아마 당신은 사용할 수 있습니다 svnlook changed --copy-info 조금 도움이됩니다. 그것을 사용하여, 당신은 어딘가에서 항목을 복사했는지 알 수 있습니다. 모든 항목이 복사되면 5월 이것을 an에서 가정하는 데 안전하십시오 svn copy 지침. 마찬가지로, 반환 된 항목을 확인하면 디렉토리를 추가하거나 삭제 한 것인지 확인할 수 있어야합니다 (단일 디렉토리 항목이 추가되거나 삭제되는 단일 디렉토리 항목이므로).

다소 도움이되기를 바랍니다 ...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top