osxkeychain: state to skip unnecessary store operations
commite1ab45b2dab51f94db9548666dfd7af626d2aa7e
authorKoji Nakamaru <koji.nakamaru@gree.net>
Wed, 15 May 2024 19:21:07 +0000 (15 19:21 +0000)
committerJunio C Hamano <gitster@pobox.com>
Wed, 15 May 2024 21:02:45 +0000 (15 14:02 -0700)
tree1498c8e94e6a8732dbdba6349b515c1ac7f6f216
parentfcf5b74e59c1c0d18a8e8e939475007b3b5f83ad
osxkeychain: state to skip unnecessary store operations

git passes a credential that has been used successfully to the helpers
to record. If a credential is already stored,
"git-credential-osxkeychain store" just records the credential returned
by "git-credential-osxkeychain get", and unnecessary (sometimes
problematic) SecItemAdd() and/or SecItemUpdate() are performed.

We can skip such unnecessary operations by marking a credential returned
by "git-credential-osxkeychain get". This marking can be done by
utilizing the "state[]" feature:

- The "get" command sets the field "state[]=osxkeychain:seen=1".

- The "store" command skips its actual operation if the field
  "state[]=osxkeychain:seen=1" exists.

Introduce a new state "state[]=osxkeychain:seen=1".

Suggested-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Koji Nakamaru <koji.nakamaru@gree.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
contrib/credential/osxkeychain/git-credential-osxkeychain.c