Prueba si el file está bajo control de versión en pysvn (subversión python)

En pysvn , ¿cómo pruebo si un file está bajo control de versión?

Utilice client.status() y verifique el atributo text_status del object de estado devuelto. Ejemplo:

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

Eso muestra que el file está versionado y sin modificaciones.

 >>> 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> 

Puede explorar otros estados posibles usando dir (pysvn.wc_status_kind)

Por lo tanto, puede resumirlo en algo como:

 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.ignonetworking) 

Si también desea direccionar files fuera de un directory de trabajo svn, necesitará capturar y manejar ClientError . P.ej

 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.ignonetworking)