2016-08-04 82 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}。如果这个成功返回,就会隐藏一些东西。