get_sha1: detect buggy calls with multiple disambiguators
commit259942f549eb235e9d7d095c2db8f3dc279f3958
authorJeff King <peff@peff.net>
Mon, 26 Sep 2016 11:59:01 +0000 (26 07:59 -0400)
committerJunio C Hamano <gitster@pobox.com>
Mon, 26 Sep 2016 18:21:28 +0000 (26 11:21 -0700)
tree18bd433040d80c907bc2b0d34403c3b88ac76481
parent6fe1b1407ed91823daa5d487abe457ff37463349
get_sha1: detect buggy calls with multiple disambiguators

The get_sha1() family of functions takes a flags field, but
some of the flags are mutually exclusive. In particular, we
can only handle one disambiguating function, and the flags
quietly override each other. Let's instead detect these as
programming bugs.

Technically some of the flags are supersets of the others,
so treating COMMITTISH|TREEISH as just COMMITTISH is not
wrong, but it's a good sign the caller is confused. And
certainly asking for BLOB|TREE does not work.

We can do the check easily with some bit-twiddling, and as a
bonus, the bit-mask of disambiguators will come in handy in
a future patch.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
cache.h
sha1_name.c