2011-10-20 50 views
2

我正在从一个perl脚本工作,它必须每隔10分钟从我的硬盘提交一个新文件。SVN提交没有结账或工作副本

我想知道是否可以执行提交而无需提交我想执行的项目的工作副本?在执行提交之前是否有必要在硬盘上检出该项目的工作副本?

回答

6

如果该目录包含了太多的内容很多其他的文件,一个解决办法做一个shallow checkout

svn checkout <url> <target> --depth empty 
cd <target> 
svn up <yourfile> 

编辑您的文件...

svn commit <yourfile> 

如果使用颠覆一个旧版本,你可能会发现你寻找什么in this post

+1

-1但是** **可以使用'svn import'。看manojlds的答案。 –

+1

好吧,我虽然'svn import'只适用于新文件。不过,我应该检查一下。 – Antoine

+0

是的antonio ... svn导入工作正常.... thnks – vishalkbhatt

2

因为您已经在Perl中,您可以使用Subversion Perl Bindings来解决您的需求。看看CPan。应该可以为单个文件执行此操作。看看有关SVN Modules的文档可能会有其他例子,如SVK(看看源代码)

+0

我得到svn导入现在工作..唯一的问题是脚本应该在后台运行,我不知道如何隐藏命令提示符窗口打开时脚本运行SVN导入命令并执行提交..任何想法家伙如何隐藏是??? – vishalkbhatt

+0

然后你正在使用Windows。有启动命令的参数?或者你是通过cmd/bat文件来做这件事的吗? – khmarbaise

+0

我已经用下面的方法解决了这个问题:'code use Win32 :: OLE;使用Win32 :: GUI; $ hw = Win32 :: GUI :: GetPerlWindow();的Win32 :: GUI ::隐藏($ HW);' – vishalkbhatt

0

你可以使用Subversion远程API提交。这里是用于Java语言的example,但是其他语言(C,Perl,...)使用相同的API。对于Perl bindings该示例的SVNRepository类对应于SVN :: Ra。