非交互式“git clean -fdx”

时间:2013-10-28 08:00:16

标签: windows git

我正在构建一个处理传入文件包的东西,但是我有一个相当严重的问题,即我无法清理传入的数据,直到它处于打破处理的位置,并且它打破了这样一种简单的方式重新启动该过程并不能解决问题。

我目前的最佳解决方案是git clean -fdxgit checkout .该流程使用的项目目录,其功能类似于魅力,除了,有时git clean会要求用户输入(“无法取消链接文件。重试?”),这会导致自动化问题。

有没有办法让Git进入非交互模式?我需要在Windows机器上从Ruby内部执行此操作。

4 个答案:

答案 0 :(得分:2)

yes no | git clean -fdx

yes no永远输出no,并通过管道传输到git clean中,使每个提示都被no回答。

答案 1 :(得分:1)

对于Windows,这是对我有用的方法(将GIT_ASK_YESNO环境变量设置为false,从而阻止git询问是不是问题):

set GIT_ASK_YESNO=false

然后,当我收到与警告相同的消息时,就像我拒绝了一样继续。

所以git clean -fdx对我有效,没有阻碍。

答案 2 :(得分:0)

这通常是因为其他进程保留了那些“不能不喜欢”的文件句柄(如“Cannot unlink a file in PHP/Windows”中所述)。

这意味着您的自动作业必须确保在更新工作目录之前首先停止/终止所有正在运行的进程。

答案 3 :(得分:0)

免责声明,我不了解Ruby。

根据documentation,还没有编写方法来杀死所有仍在运行的服务(这可能是最佳路径,具体取决于您的解决方案以及为了测试它而需要清理的内容)这个命令似乎我们希望最好的是制作一个总是导致[Y/n]提示的文件的候选名单。

所以,当我看到以下内容时:

文件' packages / RavenDB.Server.2.5.2851 / tools / blahblahblah的取消链接失败。

我在命令中添加以下内容:

git clean -fdx --exclude=/packages/RavenDB.Server.2.5.2851**

而且,似乎有效。