0

我尝试使用临时目录进行重复结帐和删除,如下所示:

client = pysvn.Client()
url = "..."
path = "\tmp\temp_dir"

client.checkout(url, path)   # it's ok here

# clear dir and checkout again
shutil.rmtree(path)
os.makedirs(path) # ok until here

assert not os.listdir(path)
client.checkout(url, path)  # EXCEPTION!

最后一行执行,它引发异常pysvn.ClientError: Working copy '/tmp/temp_dir' locked with additional errors: sqlite[S8]: attempt to write a readonly database

我试图在终端结帐,svn checkou它工作正常。但是即使在我删除了通过命令行签出的文件之后,我仍然无法通过 pysvn 在代码中签出相同的异常。

一些附加信息:

  • 我在 linux 上使用 python3.4 和 pysvn 1.8.0。
  • 在 Windows 上使用 python3.5 和 pysvn 1.9.9不会触发同样的问题。

谁能帮我找出问题所在?

问候

4

1 回答 1

0

我通过获取一个新pysvn.Client实例解决了这个问题。换句话说,通过使用以下代码:


client = pysvn.Client()
client.checkout(url, path)   # it's ok here

# clear dir and checkout again
shutil.rmtree(path)
os.makedirs(path) # ok until here
assert not os.listdir(path)

client = pysvn.Client()     # obtain another instance
client.checkout(url, path)  # ok

似乎在一个pysvn.Client实例中缓存了一些信息,使我无法再次结帐,但我不知道为什么。

于 2019-09-05T02:57:34.847 回答