2016-08-04 35 views
1

我正在Python中創建一個post-commit腳本並使用子進程調用git命令。如果有任何東西彈出,只能調用'git stash pop'

在我的腳本中,我想存儲所有更改,然後再運行一些命令並將它們彈出。問題是,如果沒有東西可以隱藏,存儲pop將返回一個非零錯誤代碼,導致subprocess.check_output()中發生異常。我知道如何忽略錯誤返回碼,但我不想這樣做。

所以我一直在想。有什麼方法可以獲得目前隱藏的物品數量嗎?我知道有一個命令'git stash list',但有什麼更適合我的需求或一些簡單和安全的方式來解析git存儲列表的輸出嗎?

也欣賞其他方法來解決這個問題。

+0

檢查一下'git stash list'輸出的是什麼? – IanAuld

+0

@IanAuld:我知道它輸出的是什麼,每一行完成一行。 – Phat

回答

4

不要那樣做!

假設git stash save不會保存任何內容,但已存在的一些項目。然後,當你全部完成時,你彈出最近的存儲,其中不是你創建的

你剛剛對用戶做了什麼?

在shell腳本代碼中執行此操作的一種方法是在git stash save之前和之後檢查git rev-parse refs/stash的結果。如果它更改(從失敗到某事或其他東西),您創建了一個新的存儲,然後您可以在完成時彈出。

Git的更新版本有git stash create,它像往常一樣創建提交對,但不會將它們放入refs/stash引用中。如果沒有東西需要保存,git stash create什麼都不做,並且什麼都不輸出。這是處理這個問題的一個更好的方法,但是依賴於Git版本。

2

您可以簡單地嘗試致電git stash show [email protected]{0}。如果這個成功返回,就會隱藏一些東西。

相關問題