如何编写包装器脚本来创建svn分支?

时间:2009-11-18 16:28:49

标签: perl svn

我的经验是在Perl,但愿意考虑其他 脚本语言。有流行的稳定的svn脚本 我们应该使用Perl,Python或Ruby的库模块 考虑:

目标:编写简单的svn包装脚本以进行分支或标记 Perl,Python或Ruby

我的要求:

Write a simple command-line script probably under 100 lines
that supports these actions:

  - create a specified svn branch
  - create a specified svn tag.  (Possibly deducing tag location
    by swapping "trunk" with "tags".)

support svn 1.6 repository or later

Script to be invoked on the svn server for speed and per current
"in house" policy.

I have been asked to use a library approach, instead of directly
calling (for ex) 'svn copy', because of the value that may added
by the library method, and because the script may be easier to
maintain and extend.

是否有一个流行的稳定的svn脚本库模块用于perl, 我们应该考虑的python还是ruby?

-
谢谢,
汤姆

-
以下是我正在研究的cpan模块:     http://www.connotea.org/user/zfyarpe/tag/tmp-9fz

这是我首先考虑的更大的列表:     在最后一个链接中将“tmp-9fz”与“svn-cpan”交换

4 个答案:

答案 0 :(得分:3)

SVN :: Client是subversion客户端功能的官方perl接口。你列出的其他模块似乎不适合你的任务(并且只是使用你想要避免的svn二进制文件?)。

该服务器上的脚本不需要调用即可快速完成;它只需要使用存储库URL而不是本地工作目录。

100行似乎过多 - 大概你的脚本会解析并验证命令行参数并执行一个svn命令,这不应该那么复杂。

我也怀疑是否需要使用模块,而不仅仅是运行svn。

(SVN :: Client应该带有subversion;包含它的cpan Alien-SVN发行版只是为了方便 - 它构建了subversion来生成模块。)

答案 1 :(得分:1)

答案 2 :(得分:1)

我同意其他回复 - 除非您有一些非常具体的需要强制执行的内容(例如特定的命名方案或您用来合并的复杂过程),只需使用命令行即​​可。当我刚开始使用svn时,我编写了一些bash脚本来执行我的一些常见操作(创建一个新的分支,将trunk合并到我的分支中,将我的分支提交回trunk)但很快就发现它更直接 - 如果我只是使用svn命令,那么转发(并且同样容易执行)。模糊对存储库执行的基础操作没有任何好处 - svn的用户需要了解其分支机构发生了什么,以便他们知道哪些操作是合适的(例如,合并,复制)。

tl;博士版:你想要实现什么特别的目标?

答案 3 :(得分:0)

看看svncopy Perl script noted in this defect。这是你需要的良好开端。