如何将所有未版本控制的文件添加到SVN?

Jer*_*eid 173 svn command-line windows-server-2003

我正在寻找一种好方法,可以自动将工作副本中的所有未版本控制的文件添加到我的SVN存储库中.

我有一个实时服务器,可以创建一些应该在源代码管理下的文件.我想有一个简短的脚本,我可以自动添加这些脚本,而不是一次一个地添加它们.

我的服务器运行的是Windows Server 2003,因此Unix解决方案不起作用.

Ron*_*nan 344

svn add --force * --auto-props --parents --depth infinity -q

棒极了!一句话:我的Eclipse会自动将新文件添加到忽略列表中.这可能是配置问题,但无论如何:有--no-ignore选项可以帮助.

在此之后,您可以提交:

svn commit -m 'Adding a file'
Run Code Online (Sandbox Code Playgroud)

  • 问题是这会添加被忽略的文件吗?不可取. (17认同)
  • 很棒的提示.比使用svn状态好多了."svn add --force"似乎就足够了. (14认同)
  • @MrDuk:缩短:`alias magic ="svn add --force*--auto-props --parents --depth infinity -q"` - 解释:`svn help add` (2认同)
  • @Name - 你需要把 `*` 放在最后,否则它不会工作(至少对我来说) (2认同)

Sam*_*ron 69

这是一个与不同的问题,但有一个答案属于这个问题:

svn status | grep '?' | sed 's/^.* /svn add /' | bash
Run Code Online (Sandbox Code Playgroud)

  • 这使用了UNIX所说的他没有的UNIX工具(grep,sed,bash). (8认同)
  • 如果你真的想要的话,你也可以在windows上挖出sed和grep. (3认同)
  • 我和mbyrne215在一起; 这个答案对我来说比OP的解决方案更有帮助,所以我正在投票.在OS X 10.6.7中完美运行. (2认同)

Neu*_*ino 37

有效的是:

c:\work\repo1>svn add . --force
Run Code Online (Sandbox Code Playgroud)

添加子目录的内容.

不添加被忽略的文件.

列出添加的文件.

命令中的点表示当前目录,如果要添加与当前目录不同的目录,则可以用特定目录名称或路径替换该目录.


lep*_*epe 33

这对我有用:

svn add `svn status . | grep "^?" | awk '{print $2}'`
Run Code Online (Sandbox Code Playgroud)

(来源)

由于您已经解决了Windows的问题,因此这是一个UNIX解决方案(遵循Sam).我在这里添加,因为我认为对于那些提出同样问题的人来说它仍然有用(因为标题不包含关键字"WINDOWS").

注意(2015年2月):正如"bdrx"所评论的那样,上述命令可以通过这种方式进一步简化:

 svn add `svn status . | awk '/^[?]/{print $2}'`
Run Code Online (Sandbox Code Playgroud)

  • 为什么人们总是grep然后管道到awk?awk可以进行模式匹配:`awk'/ ^ [?]/{print $ 2}'`; 无需额外的grep过程. (2认同)

bai*_*y86 5

此方法应该处理其中包含任意数量/空格组合的文件名...

svn status /home/websites/website1 | grep -Z "^?" | sed s/^?// | sed s/[[:space:]]*// | xargs -i svn add \"{}\"
Run Code Online (Sandbox Code Playgroud)

以下是该命令的作用的解释:

  • 列出所有已更改的文件
  • 将此列表限制为带有'?'的行 在开始 - 即新文件.
  • 除掉 '?' 线条开头的字符.
  • 删除行首的空格.
  • 将文件名传递给xargs以多次运行svn add.

使用xargs的-i参数来处理能够将带空格的文件名导入'svn add' - 基本上,-i sets {}用作占位符,这样我们就可以把"svn使用的文件名周围的字符"加'.

这种方法的一个优点是,它应该处理带有空格的文件名.


小智 5

svn add --force .
Run Code Online (Sandbox Code Playgroud)

这将在当前目录和所有版本控制的子目录中添加任何未版本控制的文件。