It might be convenient to separate the repository IDs from the repository name. The scenario I’m imagining is the following:
Alice and Bob share a repository with the ID “docs”. Carol and Dave also share a repository with the ID “docs”.
Now, Alice and Bob want to give Carol access to their “docs” repository. As far as I understand, this is currently impossible, as repository IDs have to be unique. Since repository IDs are also final, they can’t just change the ID and give Carol access to the repository with the changed ID. Instead, they have to create a new repository and make sure beforehand neither Alice, Bob, nor Carol already have a repository by that name.
My suggestion would be using something similar to Node IDs. They don’t need to have any cryptographic properties (at least they currently don’t), so using something like a UUID would come into mind as an obvious solution. UUIDs are Universally Unique (hence the name), and this way we don’t have to worry about giving our repositories “unused” names anymore.