2012-05-16 1 views

답변

7

client.status()을 사용하고 반환 된 상태 개체의 text_status 특성을 확인하십시오. 예 :

>>> import pysvn 
>>> c = pysvn.Client() 
>>> out = c.status("versioned.cpp")[0] # .status() returns a list 
>>> out.text_status 
<wc_status_kind.normal> 

이는 파일의 버전이 지정되고 수정되지 않았 음을 나타냅니다.

>>> c.status("added.cpp")[0].text_status # added file 
<wc_status_kind.added> 
>>> c.status("unversioned.cpp")[0].text_status # unversioned file 
<wc_status_kind.unversioned> 

당신은 당신이 때문에 같은에서 그것을 마무리 할 수 ​​dir (pysvn.wc_status_kind)

사용하여 다른 가능한 상태를 탐색 할 수 있습니다 :

def under_version_control(filename): 
    "returns true if file is unversioned" 
    c = pysvn.Client() 
    s = c.status(filename)[0].text_status 
    return s not in (
     pysvn.wc_status_kind.added, 
     pysvn.wc_status_kind.unversioned, 
     pysvn.wc_status_kind.ignored) 
당신은 또한 svn의 작업 외부에있는 파일을 해결하려면

디렉토리에 있다면 ClientError을 잡아서 처리해야합니다. 예 :

def under_version_control(filename): 
    "returns true if file is unversioned" 
    c = pysvn.Client() 
    try: 
     s = c.status(filename)[0].text_status 
    catch pysvn.ClientError: 
     return False 
    else: 
     return s not in (
      pysvn.wc_status_kind.added, 
      pysvn.wc_status_kind.unversioned, 
      pysvn.wc_status_kind.ignored) 
+0

'File "", 라인 1, pysvn._pysvn_2_7.ClientError : '...'은 작업 복사본이 아닙니다. ' –

+0

@MattHickford 표준 svn 명령과 마찬가지로, 내부의 파일에 사용됩니다. 작업 카피. 작업 사본 이외의 파일도 처리하려면'.status' 호출을'try/except' 블록 안에 넣으십시오. 예제로 업데이트됩니다. –