我的Drupal站点有一个相当复杂的部署设置,它是CVS和SVN的组合.我们使用CVS来获取最新版本的模块,并使用SVN进行部署.不幸的是,当CVS更新删除文件时,Subversions会抱怨因为它们没有在SVN中删除.我正在尝试做一些shell脚本和Perl来运行svn rm已经从文件系统中删除的所有这些文件的命令,但我还没有走得太远.到目前为止我所拥有的是:
svn st | grep !
这将输出从文件系统中删除的所有文件的列表,如下所示:
!       panels_views/panels_views.info
!       panels_views/panels_views.admin.inc
!       contexts/term.inc
!       contexts/vocabulary.inc
!       contexts/terms.inc
!       contexts/node_edit_form.inc
!       contexts/user.inc
!       contexts/node_add_form.inc
!       contexts/node.inc
etc. . .
但是,我想以某种方式svn del在每一行上运行.如何将此输出添加到我的Perl脚本中,或者如何svn del在这些行中运行?
编辑:我使用的确切命令,在所有人的帮助下,是
svn st | grep ^! | cut -c 9- | xargs svn del
Gre*_*ill 10
尝试使用xargs,像这样:
svn st | grep ^! | cut -f2 | xargs svn rm
该xargs命令在其标准输入上占用行,并将它们转过来并将这些行用作命令行参数svn rm.默认情况下,xargs每次调用其命令时都使用多行,如果没有问题svm rm.
您可能还需要尝试使用该cut命令才能使其正确.默认情况下,cut使用选项卡作为分隔符,Subversion可以在那里输出空格.在这种情况下,您可能必须使用cut -d' ' -f6或某些东西.
与构建这样的命令管道一样,一次运行部分以确保事情看起来正确.因此,在cut执行命令之前,请确保您拥有所需的文件名列表,然后再次运行它"| xargs svn rm".
| 归档时间: | 
 | 
| 查看次数: | 2075 次 | 
| 最近记录: |