2012-07-24 3 views
4

나는 저장소에 수출을 할 수 파이썬 SVN 바인딩 (pysvn)를 사용하려고 시도하고 다음과 같은 오류가 발생하고있다 :하고, 그러나pysvn을 사용하여 SVN 내보내기를 시도하는 중에이 오류를 어떻게 해결합니까?

import pysvn 
client = pysvn.Client() 
uri = 'https://svn.mycompany.com/myproject/trunk/' 
# This works fine 
print client.list(uri) 
# This crashes with the above error 
r = client.export(uri, './temp', force=True) 

:

python: subversion/libsvn_subr/dirent_uri.c:955: svn_dirent_join: Assertion `svn_dirent_is_canonical(base, pool)' failed. 
Aborted (core dumped) 

예제 코드입니다 셸 프롬프트에서 svn export --force https://svn.mycompany.com/myproject/trunk/이 문제없이 작동합니다.

내가 사용 :

  • 파이썬 2.7.3을
  • 서브 버전 1.7.5
  • 에 CentOS 6.0 64

모든 아이디어, 제발?

+0

? Subversion/libsvn_subr/dirent_uri.c : 955 라인은 assert입니다 (svn_dirent_is_canonical (base, pool)); 그래서 문제는 경로 형식입니다. –

답변

1

svn+ssh:// 구성표를 사용해 보았는데 동일한 오류가 발생했습니다. 이로 인해 어설 션 오류가 repo URI와 실제로 관련되지 않을 수도 있다고 생각하게되었습니다. 변덕스럽게, 나는 수출 디렉토리를 /tmp/으로 바꿨고 모든 것이 잘 작동했다. 이전에 사용하려고했던 디렉토리 (./temp)는 "루트 스쿼시"옵션이 활성화 된 NFS 마운트에있는 홈 디렉토리에 있습니다. 이것은 전에 이상한 응용 문제를 일으키는 것으로 알려져 있습니다.

3

Subversion API는 정규 URL과 경로를 내부적으로 사용합니다. URL에 슬래시가 있으며 일반 URL이 아닙니다. Subversion API 함수를 호출하기 전에 슬래시를 제거하거나 svn_uri_canonicalize() 함수를 사용하여 URL을 표준화하십시오.

당신은 서브 버전의 API 문서에서 자세한 내용을 찾을 수 있습니다 당신은 절대 경로 대신 ./temp로 시도하면 어떻게 http://subversion.apache.org/docs/api/latest/svn_dirent_uri_8h.html

+0

위대한 힌트를 가져 주셔서 감사합니다! 제 경우에는'--config-dir' 옵션을 슬래시로 끝나는 경로와 함께 사용했고 그 슬래시로 인해 어설 션 오류가 발생했습니다. – oliver