문제

저장소에 연결하고 커밋 목록을 다운로드하여 로컬로 저장하는 PHP 도구를 만들고 있습니다. 그러나 특정 리포지토리가 크고 긴 대기 시간과 가능한 시간 초과/오류로 로그 결과를 잡을 가능성으로 인해 Async 요청을 사용하여 각 커밋 메시지를 다운로드하고 싶습니다.

따라서 개정 기록의 시작 및 종말점이 있으며 다음과 같은 모든 로그를 가져올 수 있습니다.

svn log -r <from_revision>:<to_revision> <REPO_URL>

... 그리고 나는 XML 파일로 끝날 것입니다. 너무 커서 다운로드하는 데 오랜 시간이 걸리고 오랜 시간과 많은 리소스를 구문 분석하고 저장하는 데 오랜 시간이 걸릴 것입니다.

시작과 종말점을 알고 있다면 () 루프를 만들어 수정을 하나씩 가져올 수 있습니다.

svn log -r <revision> ...

그러나 주어진 경로에 대해 어떤 특정 개정이 존재하는지 모르기 때문에 오류가 발생합니다. 업데이트 중에 해당 오류를 무시하기 위해 응용 프로그램을 만들 수 있지만 불쾌한 해킹이며 요청을 게시하고 어쨌든 응답을 기다립니다. 전혀 좋지 않습니다.

그래서 나는 다음과 같은 것이 필요합니다.

  • "이 경로의 개정 번호 목록을주세요"또는 :
  • "이 경로에 대한 개정 번호 목록을주고

그렇게하면 저장소 경로에 대한 유효한 수정 배열을 만들어 하나씩 얻을 수 있습니다.

모든 제안을 환영합니다. 미리 감사드립니다.

도움이 되었습니까?

해결책

가장 좋은 방법은 다음을 수행하는 것입니다. svn log -l 100 0:{$newest} .\ 주어진 디렉토리 또는 파일의 첫 100 로그를 검색합니다. 그런 다음 반환 된 마지막 개정 번호를 읽은 다음 다음 100을 요청하십시오. svn log -l 100 {$last_ret_log}:{$newest} .\

이렇게하면 각 요청에 따라 99 개의 새로운 로그 항목을 얻지 만 모두받지 못할 것입니다.

다른 팁

Subversion 서버의 저장소 트리에 액세스 할 수있는 경우 사용할 수 있습니다. svnlook history 개정 번호 목록을 얻으려면.

자세한 내용은 다음에서 확인할 수 있습니다 http://svnbook.red-bean.com/en/1.1/re49.html.

방금 비슷한 결과를 얻으려고 노력했습니다. 특정 지점의 모든 개정 번호를 원합니다.

나는 다음이 매우 도움이된다는 것을 알았습니다.

svn log <svn_server_path> | grep "^r[0-9]\+ | " | cut -d' ' -f1 | cut -c2- > revisions.csv

이것은 별도의 줄에 모든 개정 번호가있는 파일을 제공합니다.

바라건대, 당신이나 다른 사람이 도움이 될 것입니다.

우리의 repo에는 25000 개가 넘는 개정이 있으며이 파일을 생성하는 데 몇 초가 걸립니다.

당신은보고 싶을 수도 있습니다 svn list. 그래서 당신의 목적을 위해 :


$ svn list --verbose file:///var/svn/repos
     16 sally         28361 Jan 16 23:18 README.txt
     27 sally             0 Jan 18 15:27 INSTALL
     24 harry               Jan 18 11:27 examples/

여기에는 모든 파일의 마지막 (헤드) 개정이 나와 있습니다.

svn log url -l limitNumber - r fromReversion:toReversion

예를 들어 다음 오래된 (작은) 복귀 (버전)를 찾고 싶다면

   svn log url -l 4 -r someVersion:1
 or
   svn log url -l 4 -r 99: 3

다음 새로운 (더 큰) 반전 (버전)을 찾고 싶다면 Toreversion보다 큰 비버

  svn log url -l 4 -r someVersion:head
or   
  svn log url -l 4 -r 3:99
   fromReversion lower than toReversion
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top