首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以在svndumpfilter include语句中使用正则表达式吗?

我可以在svndumpfilter include语句中使用正则表达式吗?
EN

Stack Overflow用户
提问于 2011-12-29 19:09:15
回答 1查看 2K关注 0票数 2

我需要从svn (Windows上的服务器)导出数据,但我不想包含根目录。示例:

代码语言:javascript
复制
svn
-project1
--trunk
--branches
-project2
--trunk
--branches
--onemorefolder

我想包含到project1.dump文件夹中:我使用的树干和分支(而不是project1):

代码语言:javascript
复制
 svnadmin dump /svn/ | svndumpfilter include --drop-empty-revs --renumber-revs /project1/trunk /project1/branches | sed "s/Node-path:[ ]project1\//Node-path: /g" -b | sed "s/Node-copyfrom-path:[ ]project1\//Node-copyfrom-path: /g" -b > project1.dump

但是我想自动化这个过程并创建bat文件:

代码语言:javascript
复制
call svnadmin dump /svn/iss/ -r %2:%3 | svndumpfilter include --drop-empty-revs --renumber-revs /%1/trunk /%1/branches | sed "s/Node-path:[ ]%1\//Node-path: /g" -b | sed "s/Node-copyfrom-path:[ ]%1\//Node-copyfrom-path: /g" -b > %4

但它只适用于主干和分支文件夹的结构。如何包含根文件夹中的所有文件夹并排除此根文件夹?我可以在include语句中使用正则表达式吗?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2011-12-29 20:29:00

首先,您可以将这两个sed命令作为一个命令执行:

而不是

代码语言:javascript
复制
sed "s/Node-path:[ ]%1\//Node-path: /g" -b | \
sed "s/Node-copyfrom-path:[ ]%1\//Node-copyfrom-path: /g" -b

你可以这样做

代码语言:javascript
复制
sed "s/Node-\(copyfrom-\|\)path:[ ]%1\//Node-\1path: /g" -b

它使用模式中的反向引用\1来匹配Node-pathNode-copyfrom-path

对于根目录的所有子文件夹,除了根文件夹本身,也许您可以尝试使用find <ROOTFOLDER> -type d -mindepth 1 -maxdepth 1,它可以查找不包括根目录本身的所有子目录。

可能类似于(未测试):

代码语言:javascript
复制
call svnadmin dump /svn/iss/ -r %2:%3  | \                   # keep same
svndumpfilter include --drop-empty-revs --renumber-revs \
    `find %1 -type d -maxdepth 1 -mindepth 1` | \             # used find
sed "s/Node-\(copyfrom-|\)path:[ ]%1\//Node-\1path: /g" -b \ # combined line
> %4
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8667116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档