2013-10-28 102 views
1

我正在構建一個處理傳入文件包的東西,但我有一個相當嚴重的問題,我無法清理傳入數據,直到它處於打破處理的位置,它打破了這種方式,只是重新啓動過程不能解決它。非交互式「git clean -fdx」

我目前最好的解決辦法是git clean -fdxgit checkout .項目目錄的過程中使用,它的工作原理就像一個魅力,除了有時git clean要求用戶輸入(「無法取消鏈接文件,再試一次?」),這會導致自動化問題。

有沒有辦法讓Git進入非交互模式?我需要在Windows機器上從Ruby內部執行此操作。

+0

爲什麼最初修改本地副本? – zerkms

+0

我不知道如何單獨使用git。既然你使用的是ruby,也許用'open3'寫一個'y \ n'? – Jokester

+0

這是目前的計劃,但我希望有更好的方法。 – Narfanator

回答

0

這通常是因爲其他進程對那些「不能被取消贊成」的文件進行處理(如「Cannot unlink a file in PHP/Windows」中所述)。

這意味着在更新工作目錄之前,您的自動作業必須確保所有正在運行的進程都先停止/殺死。

+0

我也不介意保留那些無法解除鏈接的文件,因爲它們不會打破我的流程,並且流程那就是使用它們已經被認爲停止了。有沒有辦法告訴Git讓它們成爲,而不是以逐個文件爲基礎的用戶? – Narfanator

+0

@Narfanator不是我所知道的,因爲它更多的是Linux錯誤,而不是git錯誤。 – VonC

+0

我在Windows上,雖然我不期望幫助。 – Narfanator

0

免責聲明,我不知道Ruby。

根據documentation,並沒有編寫一種方法來殺死所有仍在運行的服務(這可能是最好的路線,取決於您的解決方案以及您需要清理以進行測試)最好的看起來我們可以用這個命令來希望這個命令只是建立一個總是產生[Y/n]提示的文件。

因此,當我看到以下內容:

文件'packages/RavenDB.Server.2.5.2851/tools/blahblahblah未鏈接失敗。

我以下內容添加到我的命令:

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

而且,它似乎工作。