我有一个工作副本,使用脚本在晚上自动提交到SVN。
我使用SVN命令行完成此操作。
在与Google的沉闷战斗中,我无法找出如何在提交前自动将所有未版本控制的文件添加到存储库。
有没有人知道我该如何做呢?
提前感谢您的善意和帮助,
Dan
我有一个工作副本,使用脚本在晚上自动提交到SVN。
我使用SVN命令行完成此操作。
在与Google的沉闷战斗中,我无法找出如何在提交前自动将所有未版本控制的文件添加到存储库。
有没有人知道我该如何做呢?
提前感谢您的善意和帮助,
Dan
svn --force --depth infinity add .
不过要小心,因为这也会添加任何被svn:ignore
忽略的文件。
被广泛接受的解决方案是:
svn --force add .
这也会添加所有被忽略的未版本化文件。大多数人可能更喜欢只添加所有未版本化但未被忽略的文件。
要添加所有未版本化但未被忽略的文件,codefox421的答案是正确的:
svn st | grep '^\?' | sed 's/^\? *//' | xargs -I% svn add %
svn st
不显示被忽略的文件。
试试这个方法 - 比强制执行svn add更优雅:
$ svn add `svn status|grep '\?'|awk '{print $2}'`
svn st | grep '^\?' | sed 's/^\? *//' | xargs -I% svn add %
- nickiaconisalias svn-add-unversioned="svn st | grep '^\?' | sed 's/^\? *//' | xargs -I% svn add %"
现在我只需要输入svn-a
,按Tab键和回车就可以了! - Josh M.在执行svn commit
之前,您必须在脚本中为每个未加入版本控制的文件调用svn add
,类似于以下Shell脚本:
for file in `svn st | grep '^\?' | awk '{ print $2; }'`; do
svn add $file
done
--force
选项在工作目录的根目录上将会自动添加任何未受版本控制的文件。 - Matthew Scharley svn --force add dir/*/*/*
*
是我想要添加的树的层级。
使用以下代码检查结果
svn status --no-ignore
--depth
不是必需的,但也不会有害。 - Matthew Scharley