通过Bash复制/传播未版本化的SVN文件

时间:2011-05-12 20:46:42

标签: svn bash

首先,我对bash使用和语法的了解非常有限。到目前为止,我所做的一切都是“被黑了”所以如果你看到一些愚蠢的东西请告诉我:)

我正在尝试编写一个夜间'备份'脚本,将svn diff的结果放入一个单独的文件夹中。我的问题是该命令忽略了无版本的文件。我希望差异包括那些文件或整个文件本身。

除此之外:如果在资源管理器窗口中右键单击并选择Team -> Create Patch,Eclipse(pdt)即可完成此操作。这可能是Subclipse的一个特性。

我在某种程度上搜索了一个低点来强制输出svn diff,但我很确定这是不可能的。

这是我到目前为止的目标(目标是使用当前日期将所有未版本控制的文件复制到我的备份文件夹中):

svn status | grep ^? | awk '{print $2}'
File1.php
File2.php
File3.php

这将输出一个文件列表,其中包含相对于调用svn status的路径的路径。我尝试将cp连接到最后,但遇到了命名问题。

TLDR :我想将所有未版本控制的文件附加到svn diff > backups/project.diff的结果中,因此它包含版本化和未版本化的更改。

或者,如何将所有未版本控制的文件复制到特定位置(正如我在上面的示例中尝试的那样)?

版本信息:Ubuntu 11.04,svn 1.6.12

1 个答案:

答案 0 :(得分:2)

如果我理解正确,似乎你想要xargs。你可以复制:

svn status | grep ^? | awk '{print $2}' | xargs -J % cp % backups/

或者使用cat进行追加:

svn status | grep ^? | awk '{print $2}' | xargs cat >> backups/project.diff

小心文件名中的空格。