문제

Windows 서버에서 SVN을 실행하고 있으며 PERL 스크립트를 사용하여 사전 커밋 후크를 구현합니다. TortoisesVN의 다음 오류 메시지가 표시됩니다.

오류 !! 스크립 테러 !! 라인을 구문 분석 할 수 없습니다 : _U 경로/to/files/trunk

그리고 이것은 대본입니다.

foreach my $line (`$svnlook changed -t "$txn" "$repos"`)
{
  chomp($line);
  if ($line !~ /([AUD]).\s\s(.+)$/)
  {
    print STDERR "!!Script Error!! Can't parse line: $line\n";
    exit(1);
  }
  else
  {
     # perform some actions 
  }
}

exit(0);

Regex를 같은 것들로 교체하려고했습니다 /_([AUD]).\s\s(.+)$/ 성공하지 않고 - 나는 심지어 시도했다 /.*([AUD]).\s\s(.+)$/.

생각? 제안?

도움이 되었습니까?

해결책

SVN 문서를 살펴 보지 않고 나는 단지 추측하고 있습니다. 위의 출력에는 u와 실제 경로 사이에 공간이 표시되지만 \s\s 당신의 모든 성과에서.

편집] 좋아, 이제 나는 svnlook 참조. 먼저 출력이 다음과 같이 지정되어 있으므로 현재 버전의 SVNLook에 대한 Regex가 실패합니다.

  • 처음 두 열에는 상태가 포함되어 있습니다
  • 경로는 다섯 번째 열에서 시작됩니다
  • 상태는 A (추가), u (컨텐츠 변경), d (삭제), _U (속성 변경) 및 UU (컨텐츠 + 속성 변경) 중 하나 일 수 있습니다.

그래서 당신은 같은 것과 일치 할 수 있어야합니다. ^([_AUD]+)\s+(.+)$. 더 구체적으로 얻을 수 있지만 필요하지 않습니다.

이것이 일치하지 않으면 명령의 출력을 파일에 파이프하고 여기에 관련 부분을 게시하십시오.

다른 팁

if ($line !~ /^_?([AUD])\s+(.+)$/ 잘 작동해야합니다.

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