如何使用subversion Ctypes Python绑定?

如何使用subversion Ctypes Python绑定?,python,svn,Python,Svn,Subversion 1.6引入了一种称为“Ctypes Python绑定”的东西,但没有文档记录。这个绑定是什么以及如何使用它有什么可用的信息吗?例如,我有一个全新的windows XP,希望使用Subversion 1.6和这个神秘的python绑定来控制SVN存储库。我到底需要下载/安装/编译什么才能执行以下操作 import svn from almighty_ctype_subversion_bindings svn.get( "\\rep\\project" ) 这与pysvn项目

Subversion 1.6引入了一种称为“Ctypes Python绑定”的东西,但没有文档记录。这个绑定是什么以及如何使用它有什么可用的信息吗?例如,我有一个全新的windows XP,希望使用Subversion 1.6和这个神秘的python绑定来控制SVN存储库。我到底需要下载/安装/编译什么才能执行以下操作

import svn from almighty_ctype_subversion_bindings
svn.get( "\\rep\\project" )

这与pysvn项目有何联系?这是一种相同的技术,还是不同的技术?

ctypes的全部要点是,您不需要在任何地方编译任何东西。也就是说,绑定的自述文件提到了一些依赖项和构建步骤

绑定可以在Subversion源发行版中找到,至少可以在
Subversion/bindings/ctypes python/
中找到,并带有distutils setup.py


它们似乎是pysvn的继承者/替代者。

我研究了subversion的python绑定,但最终我发现,像这样调用svn.exe更简单:

(stdout, stderr, err) = execute('svn export "%s" "%s"' \
   % (exportURL, workingCopyFolder))
def execute(cmd):
    import subprocess
    proc = subprocess.Popen(\
          cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    (stdout, stderr) = proc.communicate()
    return (stdout, stderr, proc.returncode)
其中,
execute
是这样一个函数:

(stdout, stderr, err) = execute('svn export "%s" "%s"' \
   % (exportURL, workingCopyFolder))
def execute(cmd):
    import subprocess
    proc = subprocess.Popen(\
          cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    (stdout, stderr) = proc.communicate()
    return (stdout, stderr, proc.returncode)

svn.exe的输出设计为在必要时可以轻松解析。甚至还有一个--xml输出选项。

您需要Subversion源代码发行版、Python(>=2.5)和

有关构建ctypes绑定的说明如下


您将得到一个名为
csvn
的包,其使用示例如下。

是否有任何方法可以将此绑定重新分发给最终用户?例如,如果我想在Jon的WinXP计算机上安装python应用程序,他安装python和subversion就足够了吗?或者他需要安装一些“csvn sybversion ctypes python绑定包”?对不起,不知道,我的办公机器是Windows。然而,Pysvn有可用的Windows二进制文件,我发现它们非常容易使用——有一个界面可以反映命令行客户端的工作情况。所以你可以试试看。与其说是pySvn的继承者,不如说是之前官方Python绑定的继承者。以前的官方Python绑定与C API非常紧密地结合在一起,并不是特别“pythonic”。我不知道新绑定的状态如何。pySvn是一项独立的工作,旨在创建一个更“pythonic”的pythonsvn库,它与capi有很大的不同。我发现它更易于使用。最终用户需要将pySvn作为库安装。新的ctypes绑定是只需要安装svn,还是需要任何额外的步骤?解析svn的输出比使用绑定更容易,但对于某些操作来说,速度可能慢几十倍或几百倍,因为无法分摊连接和身份验证的开销。这方面的另一个问题是安全性。使用用户输入的文本调用shell是用户注入讨厌的东西的一种方式,比如:“rm-rf*;”有趣的点,但幸运的是,这些与我自己使用python+svn(即自动构建脚本)无关。我怀疑这是编写svn脚本最常见的原因。据我所知,ctypes需要单独构建(不包括在主发行版中),并且还需要linux。构建需要Apache可移植运行时,特别是需要一个配置文件,该文件不能在Windows上使用标准工具构建。我现在使用的是pySvn,它有一个Windows安装程序,似乎工作得很好。