SIGINT while a repo is syncing will leave the repo locked
Exiting shrinkwrap by SIGINT / ^C while any repos are syncing will also terminate the child git processes, leaving the index lock files (.git/index.lock) in place. Any subsequent attempt to build fails with fatal: Unable to create …/.git/index.lock: File exists. and requires manual removal of the lock files.
One solution would be to register an atexit handler to clean up lock files left over if git processes terminate unexpectedly, and maintain a list of actively syncing repos.