我正在尝试
svn add *.py --force
作为documentation suggests,但我知道事实上它缺少嵌套在更深层文件夹中的文件。为什么呢?
是否有一种标准方法可以与其他unix命令一起执行此操作? */*.py
会抓住更多的文件,但是对于每一个可能的深度来说,这都是一种痛苦。
答案 0 :(得分:3)
find
命令是挖掘你想要的文件的技巧。
find . -name "*.py" -exec svn add --parents {} ';'
并且有大约一百万种方法可以做到,所有这些方法本身都具有教育意义。
# if you want to make sure you don't find files in your .svn directories
find . -name .svn -prune -o -name "*.py" -exec svn add --parents {} ';'
# execs svn only once; probably a bit faster.
# -print0 and -0 avoid problems if files have spaces in names
find . -name .svn -prune -o -name "*.py" -print0 | xargs -0 svn add --parents
答案 1 :(得分:2)
正如另一个人用find命令注意到的那样,我使用了svn status
。按原样使用
>svn status
? private/Config.my.php
? private/log/word_failure
? private/log/db_err_log.txt
? private/import/client2
M public/reports/ReadyForMeeting.report.php
? public/tools/Connection.class.php.good
M public/tools/FieldNode.class.php
M public/tools/PageBuilderForm.class.php
M public/domain/Report_Setup_Parameter.class.php
M public/domain/Report_Setup_Page.class.php
M public/modules/mAdmin/mManageUsers.module.php
M public/modules/mAdmin.module.php
M public/modules/mAppraiserSetup.module.php
? public/js/firebug-lite.js
? public/js/lang_en-us.js
? public/js/_composite.js
? public/js/lang_en.js
M public/js/uniValidate.js
啊,看到所有具有状态的人?这意味着它们在文件系统中但未提交。因此,我添加所有的PHP文件,如此。
> svn status | grep ^\? | awk '{ print $2 }' | grep .*php$ | xargs svn add
或者如果我想添加php python和js文件,这将起作用
> svn status | grep ^\? | awk '{ print $2 }' | egrep ".*php$|.*py$|.*js$" | xargs svn add
'svn status'对我来说是最好的答案。这样只会选择未添加到回购中的内容 和往常一样,我所做的只是通过并删除我在回购中不想要的东西(为什么它仍然存在)和 然后我执行,从而获得所有帮助图像等。
> svn status | grep ^\? | awk '{ print $2 }' | xargs svn add
查找也是一个很好的解决方案,这只需要较少的思考。而且也不是那么贪心。此外,如果你在Windows上,那么一些变化将起作用。即获取svn status的输出并获取一个简短的批处理文件 祝你好运!
答案 2 :(得分:0)
find . ! -wholename ./settings.py | grep -P ".*\.(py|html)$" | xargs -d "\n" svn add