0

假设 SVN 服务器上的目录结构类似于:

/ mainfolder 
../ subfolder1
   -big-file1.xlm
   -small-file1.txt
../ subfolder2
   -big-file2.xlm
   -small-file2.txt

使用 Python 脚本中的 checkout 函数,如下所示:

client = pysvn.Client()
client.callback_get_login = svnlogin

try:
    client.checkout(svnurl()+"/mainfolder",
    './examples/pysvntest')
    print("done")   

except pysvn.ClientError as e:
    print("SVN Error occured: ", e)

如何将功能限制为仅 checkoutsmall-file的?可以按文件类型,按文件大小(或其他智能方式)

4

1 回答 1

1

client.ls()您可以使用(或)找到您需要获取的文件路径client.list(),然后过滤结果。 请注意,您无法签出单个文件,因此您需要使用client.export()client.cat()

以下代码应该为您提供一个起点:

import pysvn

url = '...'
checkout_path = '...'
file_ext = '.txt'

client = pysvn.Client()
client.checkout(path=checkout_path, url=url, depth=pysvn.depth.empty)

files_and_dirs = client.ls(url_or_path=url)

for file_or_dir in files_and_dirs:
    if file_or_dir.kind == pysvn.node_kind.file and file_or_dir.name.endswith(file_ext):
        client.export(dest_path=checkout_path, src_url_or_path=file_or_dir.name)  # TODO: Export to the correct location. Can also use client.cat() here, to get the file content into a string
于 2020-09-21T12:32:59.747 回答