From: Junio C Hamano Date: Fri, 13 Aug 2010 00:49:28 GMT Subject: Re: [PATCH v4 2/9] stash: extract stash-like check into its own function Message-ID: <7v8w4bnxpj.fsf@alter.siamese.dyndns.org> In-Reply-To: <1281398688-21008-3-git-send-email-jon.seymour@gmail.com> Jon Seymour writes: > A similar code block is used in three places; this change > factors the stash-like check into a separate function so that > it can be used in these and other places. "git stash show" used to be able to show a single-parent commit, and we are forbidding that "feature". I'd actually call that a bugfix though ;-) > +# if this function returns, then: > +# s is set to the stash commit > +# w_commit is set to the commit containing the working tree > +# b_commit is set to the base commit > +# i_commit is set to the commit containing the index tree > +# otherwise: > +# the function exits via die > +# > +assert_stash_like() { > + # stash records the work tree, and is a merge between the > + # base commit (first parent) and the index tree (second parent). > + s=$(git rev-parse --revs-only --quiet --verify --default $ref_stash "$@") && > + w_commit=$(git rev-parse --quiet --verify "$s:") && > + b_commit=$(git rev-parse --quiet --verify "$s^1:") && > + i_commit=$(git rev-parse --quiet --verify "$s^2:") || > + die "$*: no valid stashed state found" Don't these "rev-parse" calls return tree objects? It is too confusing to call them x_commit if that is the case.